2011-03-31 50 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命令行開關。