如何使用make进行编译,但还包括所有依赖项

问题描述 投票:0回答:1

我正在linux上编译一个C ++程序,我可以运行make并将其全部编译,但是当我需要降级或更改其中一个程序对另一个程序的依赖关系时,它就会崩溃。我想知道是否有可能创建一个独立的可执行文件,并将其捆绑在内部?没有太多的依赖关系,因此大小不是问题。

linux makefile
1个回答
0
投票

所以,您要问的是,您可以链接到库的静态版本(直接包含在程序中),而不是链接到程序外部的动态版本的libraris(共享库)吗?

答案是“是”,但这并不总是那么简单。首先,您必须确保已在系统中实际安装了库的静态版本:静态库和动态库是不同的文件,通常“标准”安装仅提供动态库。

如果您已经针对那些库编译了代码,则可能已经安装了静态库,因为至少在GNU / Linux系统上,静态库通常与所需的头文件等一起包含在“ dev”包中。来编译代码。

要进行此工作,您需要修改链接器命令行。如果您具有binutils软件包的最新版本(提供了链接器),则可以更改链接行,以将<之类的参数替换为-l:libssl.a -l之类的参数: libcrypto.a(不要忘了-l后的冒号),应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.