lin*_*bot 6 c++ g++ cmake librt
我在 Ubuntu 14.04 下使用 CMake 来配置我的项目。我需要使用第三方库(比如 stuff.so)。在 CMakeLists.txt 中,我使用 TARGET_LINK_LIBRARIES 链接内容库。但是,我收到一个错误:
DIR_TO_LIB/stuff.so:-1: 错误: 未定义对 `shm_open' 的引用
我尝试将这些标志放入 CMakeLists.txt 但它不起作用:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lrt")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lrt")
Run Code Online (Sandbox Code Playgroud)
一篇文章(链接)说 -lrt 应该作为 g++ 的最后一个参数。在我使用 CMake 的情况下,我该怎么做?
更新:我添加了
SET (CMAKE_VERBOSE_MAKEFILE 1)
Run Code Online (Sandbox Code Playgroud)
我发现 -lrt 不是最后一个(即使我把它放在目标链接的末尾)。请参阅此链接以获取编译输出。
从编译输出中可以看到,opencv 有一些链接标志。我不明白为什么会发生这种情况,因为我首先在 TARGET_LINK_LIBRARIES 中链接 OpenCV 库。CMake 如何处理这些链接顺序?
另请参阅我的CMakeLists.txt。
谢谢。
您需要添加rt为TARGET_LINK_LIBRARIES最后一个,例如:
TARGET_LINK_LIBRARIES(my_app ${Boost_LIBRARIES} rt)
Run Code Online (Sandbox Code Playgroud)
rt您可以通过启用详细构建输出来验证 的位置:
SET (CMAKE_VERBOSE_MAKEFILE 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7398 次 |
| 最近记录: |