事实上,Linux 上的 静电干扰 gcc 标志现在已经不起作用了,让我引用 GNU libc 的常见问题解答:
即使是静态链接的程序也需要一些共享库 - 这对我来说是不可接受的-什么 我能做到吗
{ AJ } NSS (有关详细信息,请键入‘ info Libc“ Name Service Switch”’)不会 正常工作而不分享 新系统允许使用不同的 服务(例如: NIS、档案、数码声音广播、海西) 只要改变一个配置 文件(/etc/nsswitch.conf) 重新连接任何程序 缺点是现在静止了 库需要访问共享的 库。这是处理 通过 GNU C 库透明地。
配置 glibc 的解决方案是 在这种情况下,您可以创建一个静态二进制文件 只使用服务 dns 和文件 (更改/etc/nsswitch.conf)。 您需要显式地链接到 例如:
gcc -static test-netdb.c -o test-netdb \ -Wl,--start-group -lc -lnss_files -lnss_dns -lresolv -Wl,--end-group
这种方法的问题是 你必须把每一个静电 使用 NSS 例程的程序 那些图书馆。
{ UD }事实上,不能再说使用这个选项编译的 libc 正在使用 NSS。没有开关 因此它是 非常高 推荐使用 没有 - able-static-nss,因为这使得程序在 系统不一致
关于这个事实,现在有什么合理的方法可以在 Linux 上创建一个全功能的静态构建,或者静态链接在 Linux 上已经完全死了吗?我的意思是静态构建: