PaddlePaddle / PaddleOCR

Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
https://paddlepaddle.github.io/PaddleOCR/
Apache License 2.0
43.74k stars 7.79k forks source link

ARMLinux端侧编译出错 #1237

Closed superdu12138 closed 3 years ago

superdu12138 commented 3 years ago

error: ‘float32x4_t’ was not declared in this scope

完整报错: [ 50%] Building CXX object CMakeFiles/ocr_db_crnn.dir/ocr_db_crnn.cc.o /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc: In function ‘void NeonMeanScale(const float, float, int, std::vector, std::vector)’: /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:33:3: error: ‘float32x4_t’ was not declared in this scope float32x4_t vmean0 = vdupq_n_f32(mean[0]); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:33:3: note: suggested alternative: ‘float_t’ float32x4_t vmean0 = vdupq_n_f32(mean[0]); ^~~ float_t /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:34:15: error: expected ‘;’ before ‘vmean1’ float32x4_t vmean1 = vdupq_n_f32(mean[1]); ^~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:35:15: error: expected ‘;’ before ‘vmean2’ float32x4_t vmean2 = vdupq_n_f32(mean[2]); ^~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:36:15: error: expected ‘;’ before ‘vscale0’ float32x4_t vscale0 = vdupq_n_f32(scale[0]); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:37:15: error: expected ‘;’ before ‘vscale1’ float32x4_t vscale1 = vdupq_n_f32(scale[1]); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:38:15: error: expected ‘;’ before ‘vscale2’ float32x4_t vscale2 = vdupq_n_f32(scale[2]); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:46:5: error: ‘float32x4x3_t’ was not declared in this scope float32x4x3_t vin3 = vld3q_f32(din); ^~~~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:46:5: note: suggested alternative: ‘float_t’ float32x4x3_t vin3 = vld3q_f32(din); ^~~~~ float_t /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:47:17: error: expected ‘;’ before ‘vsub0’ float32x4_t vsub0 = vsubq_f32(vin3.val[0], vmean0); ^~~~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:48:17: error: expected ‘;’ before ‘vsub1’ float32x4_t vsub1 = vsubq_f32(vin3.val[1], vmean1); ^~~~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:49:17: error: expected ‘;’ before ‘vsub2’ float32x4_t vsub2 = vsubq_f32(vin3.val[2], vmean2); ^~~~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:50:17: error: expected ‘;’ before ‘vs0’ float32x4_t vs0 = vmulq_f32(vsub0, vscale0); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:51:17: error: expected ‘;’ before ‘vs1’ float32x4_t vs1 = vmulq_f32(vsub1, vscale1); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:52:17: error: expected ‘;’ before ‘vs2’ float32x4_t vs2 = vmulq_f32(vsub2, vscale2); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:53:24: error: ‘vs0’ was not declared in this scope vst1q_f32(dout_c0, vs0); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:53:5: error: ‘vst1q_f32’ was not declared in this scope vst1q_f32(dout_c0, vs0); ^~~~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:54:24: error: ‘vs1’ was not declared in this scope vst1q_f32(dout_c1, vs1); ^~~ /home/test/yunmai/dudu/Embed/Paddle-Lite_test/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8/demo/cxx/ocr/ocr_db_crnn.cc:55:24: error: ‘vs2’ was not declared in this scope vst1q_f32(dout_c2, vs2); ^~~ CMakeFiles/ocr_db_crnn.dir/build.make:62: recipe for target 'CMakeFiles/ocr_db_crnn.dir/ocr_db_crnn.cc.o' failed make[2]: [CMakeFiles/ocr_db_crnn.dir/ocr_db_crnn.cc.o] Error 1 CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/ocr_db_crnn.dir/all' failed make[1]: [CMakeFiles/ocr_db_crnn.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2

edimetia3d commented 3 years ago

您好.

初步判断您应该是没有正确配置交叉编译环境. 麻烦确认一下在cmake执行过程中是否选择了正确的编译器.

如若您的开发机是x86环境,那么打印出下面的信息,则意味着交叉编译工具链没有正确配置.

-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works

我们会尽快在文档中补充交叉编译相关的信息.

AIpioneer commented 3 years ago

https://github.com/PaddlePaddle/PaddleOCR/issues/1208

paddle-bot-old[bot] commented 3 years ago

Since you haven\'t replied for more than 3 months, we have closed this issue/pr. If the problem is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于您超过三个月未回复,我们将关闭这个issue/pr。 若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。

hoozh commented 2 years ago

1208

我也遇到了这个问题,但是增加头文件之后,出现了新的错误,似乎是CPU架构不对,我是在树莓派4B上编译的

测试代码是 PaddleOCR v2.9 + Paddle-Lite v2.10

#include <arm_neon.h>

错误:

[ 83%] Building CXX object CMakeFiles/ocr_db_crnn.dir/ocr_db_crnn.cc.o
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h: In function ‘void NeonMeanScale(const float*, float*, int, std::vector<float>, std::vector<float>)’:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
 vdupq_n_f32 (float32_t __a)
 ^~~~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:39:36: note: called from here
   float32x4_t vscale2 = vdupq_n_f32(scale[2]);
                         ~~~~~~~~~~~^~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
 vdupq_n_f32 (float32_t __a)
 ^~~~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:38:36: note: called from here
   float32x4_t vscale1 = vdupq_n_f32(scale[1]);
                         ~~~~~~~~~~~^~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
 vdupq_n_f32 (float32_t __a)
 ^~~~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:37:36: note: called from here
   float32x4_t vscale0 = vdupq_n_f32(scale[0]);
                         ~~~~~~~~~~~^~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
 vdupq_n_f32 (float32_t __a)
 ^~~~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:36:35: note: called from here
   float32x4_t vmean2 = vdupq_n_f32(mean[2]);
                        ~~~~~~~~~~~^~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
 vdupq_n_f32 (float32_t __a)
 ^~~~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:35:35: note: called from here
   float32x4_t vmean1 = vdupq_n_f32(mean[1]);
                        ~~~~~~~~~~~^~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:6740:1: error: inlining failed in call to always_inline ‘float32x4_t vdupq_n_f32(float32_t)’: target specific option mismatch
 vdupq_n_f32 (float32_t __a)
 ^~~~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:34:35: note: called from here
   float32x4_t vmean0 = vdupq_n_f32(mean[0]);
                        ~~~~~~~~~~~^~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:12212:1: error: inlining failed in call to always_inline ‘float32x4x3_t vld3q_f32(const float32_t*)’: target specific option mismatch
 vld3q_f32 (const float32_t * __a)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:47:39: note: called from here
     float32x4x3_t vin3 = vld3q_f32(din);
                                       ^
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1941:1: error: inlining failed in call to always_inline ‘float32x4_t vsubq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
 vsubq_f32 (float32x4_t __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:48:34: note: called from here
     float32x4_t vsub0 = vsubq_f32(vin3.val[0], vmean0);
                         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1941:1: error: inlining failed in call to always_inline ‘float32x4_t vsubq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
 vsubq_f32 (float32x4_t __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:49:34: note: called from here
     float32x4_t vsub1 = vsubq_f32(vin3.val[1], vmean1);
                         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1941:1: error: inlining failed in call to always_inline ‘float32x4_t vsubq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
 vsubq_f32 (float32x4_t __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:50:34: note: called from here
     float32x4_t vsub2 = vsubq_f32(vin3.val[2], vmean2);
                         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1172:1: error: inlining failed in call to always_inline ‘float32x4_t vmulq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
 vmulq_f32 (float32x4_t __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:51:32: note: called from here
     float32x4_t vs0 = vmulq_f32(vsub0, vscale0);
                       ~~~~~~~~~^~~~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1172:1: error: inlining failed in call to always_inline ‘float32x4_t vmulq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
 vmulq_f32 (float32x4_t __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:52:32: note: called from here
     float32x4_t vs1 = vmulq_f32(vsub1, vscale1);
                       ~~~~~~~~~^~~~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:1172:1: error: inlining failed in call to always_inline ‘float32x4_t vmulq_f32(float32x4_t, float32x4_t)’: target specific option mismatch
 vmulq_f32 (float32x4_t __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:53:32: note: called from here
     float32x4_t vs2 = vmulq_f32(vsub2, vscale2);
                       ~~~~~~~~~^~~~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:10970:1: error: inlining failed in call to always_inline ‘void vst1q_f32(float32_t*, float32x4_t)’: target specific option mismatch
 vst1q_f32 (float32_t * __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:54:14: note: called from here
     vst1q_f32(dout_c0, vs0);
     ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:10970:1: error: inlining failed in call to always_inline ‘void vst1q_f32(float32_t*, float32x4_t)’: target specific option mismatch
 vst1q_f32 (float32_t * __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:55:14: note: called from here
     vst1q_f32(dout_c1, vs1);
     ~~~~~~~~~^~~~~~~~~~~~~~
In file included from /home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:21:
/usr/lib/gcc/arm-linux-gnueabihf/8/include/arm_neon.h:10970:1: error: inlining failed in call to always_inline ‘void vst1q_f32(float32_t*, float32x4_t)’: target specific option mismatch
 vst1q_f32 (float32_t * __a, float32x4_t __b)
 ^~~~~~~~~
/home/pi/paddle/Paddle-Lite-Demo-2.9/PaddleLite-armlinux-demo/ocr_db_crnn/ocr_db_crnn.cc:56:14: note: called from here
     vst1q_f32(dout_c2, vs2);
     ~~~~~~~~~^~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/ocr_db_crnn.dir/build.make:115: CMakeFiles/ocr_db_crnn.dir/ocr_db_crnn.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/ocr_db_crnn.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
hoozh commented 2 years ago

4981