C - 包含依赖项的编译

时间:2013-04-27 00:06:31

标签: c gcc static-linking

我有一些代码要运行在我没有root权限的机器上。 该机器没有运行此代码所需的一些库。

编译时有没有办法包含所有依赖项?我意识到结果文件可能非常大。

1 个答案:

答案 0 :(得分:8)

您正在寻找的是静态编译。执行静态编译包括可执行文件本身的所有库,因此您不必担心特定系统,分发等上的依赖链。

你可以这样做:

gcc -Wl,-Bstatic -llib1 -llib2 file.c

-Wl将链接后面的标志传递给-Bstatic,如果可能,lib1告诉它链接静态,然后lib2gcc -static-libgcc -static file.c 是你想要的库链接。

或者,尝试:

lib.a

编译仍需要匹配非特权系统的体系结构。您需要在编译系统(ldd a.out

上安装静态库

如果编译正确,运行时应显示“不是动态可执行文件”:

{{1}}