你应该是想问 “GCC 在 Debian 下如何进行静态编译”。下面分情况说明。
最简单的方式是使用 -static 参数:
gcc main.c -o main -static
这样生成的可执行文件会 不依赖动态库(libc 等)。
验证:
ldd main
如果输出:
not a dynamic executable
说明静态编译成功。
Debian 默认 没有安装静态 C 库。
需要安装:
sudo apt update
sudo apt install libc6-dev glibc-source
sudo apt install gcc-multilib # 如果是 64 位系统想编 32 位
关键包:
sudo apt install libc6-dev
静态库位置:
/usr/lib/x86_64-linux-gnu/libc.a
gcc main.c -o main -static-libgcc -static-libstdc++
(C++ 常用)
例如静态链接 pthread:
gcc main.c -o main -static -lpthread
注意:
libxxx.alibxxx.sog++ main.cpp -o main -static
如果报错:
sudo apt install libstdc++-dev
⚠️ Debian / glibc 不推荐完全静态链接,原因:
更推荐:
gcc main.c -o main -Wl,-Bstatic -lm -Wl,-Bdynamic
file main
ldd main
如果你愿意,可以告诉我:
我可以给你更精确的命令。