Hec*_*tor 9 c gcc static-linking
我有一些代码,我想在一台我没有root权限的机器上运行.该机器没有运行此代码所需的一些库.
在编译时有没有办法包含所有依赖项?我意识到结果文件可能非常大.
您正在寻找的是静态编译.执行静态编译包括将所有库包含到可执行文件本身中,因此您不必担心特定系统,分发等上的依赖链.
你可以这样做:
gcc -Wl,-Bstatic -llib1 -llib2 file.c
Run Code Online (Sandbox Code Playgroud)
在-Wl下面的链接标志传球,-Bstatic告诉如果可能的话它链接的静态,然后lib1,lib2是你打算链接库.
或者,尝试:
gcc -static-libgcc -static file.c
Run Code Online (Sandbox Code Playgroud)
编译仍然需要匹配非特权系统的体系结构.你需要在编译系统上安装静态库(lib.a)
如果编译正确,它应该在您运行时显示"不是动态可执行文件":
ldd a.out
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7880 次 |
| 最近记录: |