我在使用opencv库为ARM构建应用程序时遇到问题。 我为我的电脑安装了Opencv 2.4.6.1,并提供了教程http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation
之后我尝试为我的电脑构建示例:
gcc main.c -o main ´pkg-config --libs --clags opencv´ -lpthread
有效。
接下来,我安装arm-linux-gnueabihf-gcc,编写示例并试用它。它有效。
现在我为ARM制作opencv库
cd /opt/opencv-2.4.6.1/platforms/linux
mkdir build_hardfp
pico arm-gnueabi.toolchain.cmake
change 4.6 to 4.7.2
cd build_hardfp
cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake -DWITH_TBB=OFF -DWITH_QT=OFF -D SOFTFP=OFF -D WITH_V4L=ON -D WITH_OPENGL=ON –D CMAKE_BUILD_TYPE=RELEASE –D BUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX=/opt/opencv-2.4.6.1/rpi ../../..
make
make install
现在我的问题是:
我尝试构建我的示例
arm-linux-gnueabihf-gcc -o main main.c -lpthread -I/opt/opencv-2.4.6.1/rpi/include -I/opt/opencv-2.4.6.1/rpi/include/opencv -I/opt/opencv-2.4.6.1/rpi/lib -L/opt/opencv-2.4.6.1/rpi/ -lcv -lhighgui
main.c:在函数'main'中: main.c:12:8:警告:赋值从整数中生成没有强制转换的指针[默认启用] /home/honza/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../ ../../arm-linux-gnueabihf/bin/ld:找不到-lcv /home/honza/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../ ../../arm-linux-gnueabihf/bin/ld:找不到-lhighgui collect2:错误:ld返回1退出状态
可能我必须为ARM体系结构编译所有依赖项。我想,我在之前的步骤中使用cmake来处理这个问题。 也许我没有设定路径。
我做错了什么以及如何解决?
答案 0 :(得分:1)
您为OpenCV库使用旧名称:-lcv -lhighgui
。 OpenCV具有2.0版本的新结构。使用此标志:-lopencv_core -lopencv_highgui
。