针对 QNX 交叉编译后,boost 文件系统 (1.63) 失败并出现未定义的引用错误



我已经为 QNX 交叉编译了 boost,所有构建文件都存在于路径下/home/hari1234/qnx_cross_compile/src/arm/boost_1_63_0/build/include and/home/hari1234/qnx_cross_compile/src/arm/boost_1_63_0/build/lib

我正在尝试从源代码编译 ROS,但失败了

/

opt/qnx/install/host/linux/x86_64/usr/bin/arm-unknown-nto-qnx7.0.0eabi-ld:警告:bin.v2/libs/system/build/qcc-arm/release/target-os-qnx/threading-multi/libboost_system.so.1.63.0,/home/hari1234/qnx_cross_compile/src/arm/boost_1_63_0/build/lib/libboost_filesystem.so 需要,未找到(尝试使用 -rpath 或 -rpath-link)/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: 警告:"tmpnam"功能很危险。请改用"mkstemp"。/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: 警告:"tempnam"功能很危险。请改用"mkstemp"。/opt/qnx/install/host/linux/x86_64/usr/bin/arm-unknown-nto-qnx7.0.0eabi-ld:警告:bin.v2/libs/system/build/qcc-arm/release/target-os-qnx/threading-multi/libboost_system.so.1.63.0,/home/hari1234/qnx_cross_compile/src/arm/boost_1_63_0/build/lib/libboost_filesystem.so 需要,未找到(尝试使用 -rpath 或 -rpath-link)/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: 对boost::program_options::validate(boost::any&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, int)' /opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: undefined reference toboost::p rogram_options::abstract_variables_map::operator[](std::__1::basic_string, std::__1::allocator> const&) const'/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: 未定义对boost::program_options::options_description::options_description(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned int)' /opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: undefined reference toboost::p rogram_options::d etail::cmdline::cmdline(std::__1::vector, std::__1::allocator>, std::__1::allocator, std::__1::allocator>>> const&)'/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: 对boost::program_options::to_internal(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)' /opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: undefined reference toboost::p rogram_options::arg'/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/lib/librospack.so: 未定义引用 'boost::p rogram_options::value_semantic_codecvt_helper::p arse(boost::any&, std::__1::vector, std::__1::allocator>, std::__1::allocator, std::__1::allocator>>> const&, bool) const' 抄送:/opt/qnx/install/host/linux/x86_64/usr/bin/arm-unknown-nto-qnx7.0.0eabi-ld error 1 CMakeFiles/rospackexe.dir/build.make:106:目标"/opt/qnx/install/arm_catkin_ros/devel_isolated/rospack/bin/rospack"的配方失败

警告表明 libboost_filesystem.so 查找未找到的 bin.v2/libs/system/build/qcc-arm/release/target-os-qnx/threading-multi/libboost_system.so.1.63.0。我不确定在为 QNX 交叉编译 boost 时是否要生成 bin.v2 文件夹。我认为这就是发生 boost::filesystem::validate 的未定义引用错误的原因。

任何指示或帮助将不胜感激

提前致谢

我能够通过将 boost 库编译为静态库而不是动态库来解决这个问题。有人告诉我,原始问题必须与设置 rpath 有关

最新更新