【发布时间】:2014-04-02 18:05:16
【问题描述】:
我正在尝试编译一个使用 Boost 的 ROS 包。代码在 Linux 上编译得很好,但在 OS X 上我得到了错误
ld: symbol(s) not found for architecture x86_64
我通过 brew 安装了 Boost,它似乎安装在 64 位(我的系统也是 64 位 - OS X 10.9),运行时
file libboost_atomic-mt.dylib
输出
libboost_atomic-mt.dylib: Mach-O 64-bit dynamically linked shared library x86_64
在 CMakeFiles.txt 中,我尝试了几乎所有关于编译和链接标志的方法,尝试了 -stdlib 作为 libc++ 和 libstdc++,以及 -mmacosx-version-min 作为从 10.5 到 10.9 的所有内容。例如,现在我有:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++ -mmacosx-version-min=10.9")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++ -mmacosx-version-min=10.9")
此外,使用 -m64 构建会产生相同的错误,使用 -m32 构建会产生相同的错误,只是它显示“...架构 i136”。
以下粘贴箱分别包含我的 CMakefiles.txt 和编译错误:
http://pastebin.com/0MD8T916 - CMakeFiles.txt
http://pastebin.com/v3vk9i2r - 错误
我没有解决这个问题的想法......
感谢您的帮助!
【问题讨论】:
-
在我看来,它没有在 ros 中找到任何东西。您应该将 ros 添加到 target_link_libraries() 还是作为 MADP_LIBRARIES 的一部分处理?
-
不是。将 ROS 添加到 target_link_libraries() 似乎有效!非常感谢!
-
好的,很高兴听到这个消息!