c++ - 无法将可执行文件与 CMake 静态链接
问题描述
我正在尝试编译和链接一个静态可执行文件,以便它可以在不同的系统上运行,而无需对安装的不同库的版本等做出任何假设。
按照 CMake 文档,我将添加target_link_libraries(target -static)
到我的 CMakeLists.txt 中。不幸的是,我看不到一种方法来探究这是否有任何影响。但是通过使用ldd executable
. 我得到以下输出
linux-vdso.so.1 (0x00007fffe29eb000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f54cbbb2000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f54cb829000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f54cb48b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f54cb09a000)
/lib/ld64.so.1 => /lib64/ld-linux-x86-64.so.2 (0x00007f54cbdd1000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f54cae82000)
这告诉我可执行文件确实与动态库 (*.so) 链接。有人对进一步调查有什么建议吗?我真的发现这是 CMake 的缺点之一。在这一点上,该项目已经足够复杂,以至于从命令行进行编译和链接或制作 Makefile 系统确实需要很长时间。但我真的需要查看传递给 GCC 的实际标志,以了解为什么会发生这种情况。
有什么建议么?
解决方案
推荐阅读
- reactjs - 如何使用componentDidMount()在render()中异步返回一个promise链?
- php - 当键具有整数和字符串的组合时,php数组多重排序没有返回正确的结果
- ios - Swift 使用 floatValue 将精确的转换字符串转换为浮点数
- django - 缓慢的 Django Admin 更改视图
- exoplayer - ExoPlayer 自动显示/隐藏自定义播放器控件
- ruby - 使用 SSL 冻结 ruby http 请求
- php - Reactjs - 如何手动缓存 SPA 以服务于 Googlebot
- mysql - 按两列小数点后的特定数字选择
- java - 如何使用杰克逊有条件地(在其他属性上)反序列化属性?
- navigation - 如何在 Jssor 中自定义箭头导航