CMake:构建静态二进制文件

时间:2011-02-08 20:08:52

标签: cmake

我正在尝试使用CMake构建静态二进制文件。

我环顾四周,发现了许多非描述性的解决方案(例如添加链接器标志“-static”),但我不确定如何测试它们。

我如何知道某个库(例如线程)是否已静态内置到我的二进制文件中?

3 个答案:

答案 0 :(得分:3)

正如trenki所说,使用ldd获取可执行文件所依赖的动态链接库列表,并检查它以确保您想要静态链接的代码那里

您还可以使用nmstrings命令分别在可执行文件中转储程序化符号和人类可读文本。使用grep过滤您在代码中引用的静态库中的标识符的输出,例如函数名称。

最后,您可以使用objdump命令获取程序的反汇编列表。静态库函数应该出现在其中。

第一种方法,加上可编译,链接和运行良好的可执行文件,以演示静态库有助于提供的功能,这可能是一个充分的测试。仅当您想深入挖掘时才使用第二种或第三种方法。

答案 1 :(得分:1)

与CMake无关,但如果您在UNIX系统上,file实用程序至少可以告诉您二进制文件是否使用共享库。

答案 2 :(得分:1)

在Linux下,您还可以使用ldd命令显示您的二进制文件动态链接到哪些库。