我有一些代码想在我没有 root 访问权限的机器上运行。
该机器没有运行此代码所需的一些库。
有什么方法可以在编译时包含所有依赖项吗?我意识到生成的文件可能非常大。
您正在寻找的是静态编译。执行静态编译将所有库包含到可执行文件本身中,因此您不必太担心特定系统、发行版等上的依赖链。
您可以通过以下方式执行此操作:
gcc -Wl,-Bstatic -llib1 -llib2 file.c
The -Wl
将以下标志传递给链接器,-Bstatic
告诉它如果可能的话链接静态,然后lib1
, lib2
,是您要链接的库。
或者,尝试:
gcc -static file.c
编译仍然需要匹配非特权系统的体系结构。并且您需要在编译系统上安装静态库(lib.a
)
如果编译正确,运行时应该显示“不是动态可执行文件”:
ldd a.out
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)