在Linux上,我正在构建一个以前与静态库( C++ )链接的可执行文件,我已经更新了构建,以便它现在可以动态地链接到这个库(.so)。我想确认这个库中的代码不再静态地链接到可执行文件中。我希望能够通过比较静态链接和动态链接的可执行文件的nm输出来确认这一点,但是两者之间有很多不同,如果有更好的方法推荐,那么手动确认这个way...wondering将是一种努力。
我有一个问题,了解如何在构建动态库货物链接二进制文件。为了更好地理解它,我使用了,并尝试构建'ls‘更改Cargo.toml和其他东西,以使可执行文件尽可能小。我很快发现动态链接库可以大大减少可执行文件的大小。
通过互联网进行优化,我发现当您在货中以"dylibs“的形式生成库时,它们仍然静态地包含"libstd”,除非您显式地告诉编译器使用"-C偏好-动态“标记动态地包含它。
我不使用这个标志,但最终仍然有libstd动态链接,这是非常奇怪的。
ls的Cargo.toml
我对这个做了一点修改。
[package]
name = "ls"
ve