在 Ubuntu 下使用 gcc 进行静态链接,通常有两种情况:
gcc main.c -static -o main
-static:告诉链接器尽量使用 .a 静态库libc.so 等动态库file main
ldd main
如果 ldd 显示 not a dynamic executable,说明成功静态链接。
例如:只静态链接 libpthread,其他仍用动态库
gcc main.c -Wl,-Bstatic -lpthread -Wl,-Bdynamic -o main
-Wl,-Bstatic:后续库使用静态链接-Wl,-Bdynamic:恢复为动态链接Ubuntu 默认 不安装静态库,会报错:
cannot find -lc
解决:
sudo apt update
sudo apt install libc6-dev-static
其他库示例:
sudo apt install libstdc++-dev # C++
sudo apt install zlib1g-dev # zlib
注意:不是所有库都提供
.a
g++ main.cpp -static -o main
或:
g++ main.cpp -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -o main
⚠️ 缺点:
如果你有 具体库(如 OpenSSL、pthread、libcurl)或 具体报错信息,可以贴出来,我可以给你精确命令。