$ printf 'int main(){}' | gcc -static -x c - -o hello
$ scp hello vi-server.org:./
hello 100% 565KB 565.2KB/s 00:00
$ ssh -t vi-server.org "./hello; uname -r"
FATAL: kernel too old
sh: line 1: 15378 Segmentation fault ./hello
2.6.18-274.... # can't easily upgrade the kernel
Connection to vi-server.org closed.
Run Code Online (Sandbox Code Playgroud)
如何构建可在旧系统上运行的静态二进制文件?我希望静态二进制文件在2.4上工作.
eca*_*mur 12
您需要配置glibc以定位较旧的内核版本.根据http://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html glibc接受配置选项--enable-kernel=version,其中version的形式2.4.20是针对较旧的内核版本.
然后,您可以静态链接您的程序gcc -static -nodefaultlibs [...] /path/to/my/libc.a.
| 归档时间: |
|
| 查看次数: |
19435 次 |
| 最近记录: |