我有一些代码要运行在我没有root权限的机器上。 该机器没有运行此代码所需的一些库。
编译时有没有办法包含所有依赖项?我意识到结果文件可能非常大。
答案 0 :(得分:8)
您正在寻找的是静态编译。执行静态编译包括可执行文件本身的所有库,因此您不必担心特定系统,分发等上的依赖链。
你可以这样做:
gcc -Wl,-Bstatic -llib1 -llib2 file.c
-Wl
将链接后面的标志传递给-Bstatic
,如果可能,lib1
告诉它链接静态,然后lib2
,gcc -static-libgcc -static file.c
是你想要的库链接。
或者,尝试:
lib.a
编译仍需要匹配非特权系统的体系结构。您需要在编译系统(ldd a.out
)
如果编译正确,运行时应显示“不是动态可执行文件”:
{{1}}