C – 包含依赖项的编译

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

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

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

你可以这样做:

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

-Wl将后面的标志传递给链接器,-Bstatic告诉它尽可能链接静态,然后lib1,lib2是你想要链接的库。

或者,尝试:

 gcc -static-libgcc -static file.c 

编译仍然需要匹配非特权系统的体系结构。 你需要在编译系统上安装静态库(lib.a)

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

 ldd a.out