执行以下步骤:
我在Ubuntu 9.04上运行gumstix overo(arm)的交叉开发系统。现在我想使用boost。所以我尝试交叉编译boost如下:
1。)下载boost 1.49
2。)构建boost构建系统: 工具/编译/ V2 / bootstrap.sh
3。)修改了user-config.jam: #配置gcc(默认版本)。 使用gcc:arm:/opt/Gumstix.Toolchain/overo-oe/bin/arm-angstrom-linux-gnueabi-gcc;
4。)通过调用编译强制: 〜/ boost_1_49_0 $ ./tools/build/v2/b2 toolset = gcc-arm stage
5.)导致: ...未能更新56个目标...... ...跳过6个目标...... ...更新了783个目标......
- >我不知道失败了什么,但在stage / libs中存在所有的lib。
设置简单的C项目:
#include <boost/asio.hpp>
boost::asio::io_service io_service;
...
No other boost stuff here.
现在链接到已创建的libboost_system.a库。
结果:
make all
Building target: ChecksumTest_arm-omap3503
Invoking: GCC C++ Linker
arm-angstrom-linux-gnuabi-g++ -L../../../../../../../Binary/Lib -L/home/Workspace /Projekte/boost/boost_1_49_0/stage/lib -o "ChecksumTest_arm-omap3503"
./src/ChecksumTest.o -lTools_arm-omap3503 -lboost_system -lrt
./src/ChecksumTest.o: In function `global constructors keyed to _Z8checkCrcRKN5Tools8Checksum4TypeERKj':
ChecksumTest.cpp:(.text+0x20): undefined reference to `boost::system::get_system_category()'
ChecksumTest.cpp:(.text+0x2c): undefined reference to `boost::system::get_generic_category()'
ChecksumTest.cpp:(.text+0x38): undefined reference to `boost::system::get_generic_category()'
ChecksumTest.cpp:(.text+0x44): undefined reference to `boost::system::get_generic_category()'
ChecksumTest.cpp:(.text+0x50): undefined reference to `boost::system::get_system_category()'
ChecksumTest.cpp:(.text+0x5c): undefined reference to `boost::system::get_system_category()'
ChecksumTest.cpp:(.text+0x110): undefined reference to `boost::system::get_system_category()'
ChecksumTest.cpp:(.text+0x19c): undefined reference to `boost::system::get_system_category()'
./src/ChecksumTest.o: In function `checkCrc(Tools::Checksum::Type const&, unsigned int const&)':
ChecksumTest.cpp:(.text+0x460): undefined reference to `boost::system::get_system_category()'
./src/ChecksumTest.o:ChecksumTest.cpp:(.text+0x6fc): more undefined references to `boost::system::get_system_category()' follow
collect2: ld returned 1 exit status
make: *** [ChecksumTest_arm-omap3503] Error 1
相同的项目(即使没有交叉编译的提升)也会在Windows主机上进行链接。所以生成的lib有问题。我花了几个小时才找到我的错,但没有成功。
任何提示?!
编辑: 我现在尝试通过调用来构建sytem lib: 〜/ boost / boost_1_49_0 $ ./tools/build/v2/b2 toolset = gcc-arm variant = release link = static runtime-link = static stage --with-system
导致: ......更新了8个目标......
没有任何进一步的构建错误。但链接也失败了。