2011-03-31 54 views
3

我正在努力为BeagleBoard开发。 因此我安装了CodeSourcery Sourcery_G ++ _ Lite工具链。linux交叉编译和动态库/链接

我想使用opencv库。所以我将源码下载到我的Ubuntu devolepment系统中,并使用gcc编译为共享库并安装了该库。 当我为x86架构构建helloworld应用程序时,一切都很好。

现在,我想编译相同的应用程序与ARM架构的其他工具链。

我得到这些警告/错误回报在编译/链接:

[email protected]:~/Downloads/BeagleTest$ arm-none-linux-gnueabi-g++ -c ImageProcessing.cpp -o ImageProcessing.o -I/usr/local/include 
cc1plus: warning: include location "/usr/local/include" is unsafe for cross-compilation 

[email protected]:~/Downloads/BeagleTest$ arm-none-linux-gnueabi-g++ -c Main.cpp -o Main.o -I/usr/local/include 
cc1plus: warning: include location "/usr/local/include" is unsafe for cross-compilation 

[email protected]:~/Downloads/BeagleTest$ arm-none-linux-gnueabi-g++ -oApplication -L/usr/local/lib Main.o ImageProcessing.o -lopencv_core 
/usr/local/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/local/lib" is unsafe for cross-compilation 
/usr/local/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/local/lib/libopencv_core.so when searching for -lopencv_core 
/usr/local/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lopencv_core 
collect2: ld returned 1 exit status 

显然,使用相同的IM包含的目录使用的x86架构和库pathes像IM。这不起作用。但我需要做什么?我必须交叉编译opencv库吗?

回答

0

是的。库是特定于架构的。

+0

好的。非常感谢你。我会试一试。 – benlismo 2011-04-01 11:47:53

1

库必须交叉编译,并且您必须确保链接时找到正确的库。如果这不能自动工作,你可能想看看gcc的--sysroot命令行开关。