我已经包含了 header netdb.h
,其中包含 getaddrinfo
,但是 gcc 发出此警告:
warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
gcc -m32 -static -s -O2 -std=c99 -D_POSIX_C_SOURCE=200112L myprogram.c
我怎样才能静态编译任何丢失的文件?
可能的解决方案:
可能是 glibc 安装缺少静态编译所需的相应目标文件。如果是这种情况,请创建相应的目标文件并在编译时链接它。
尝试使用 EGLIBC 而不是 glibc。
我用 dietlibc 成功编译了我的程序,编译时没有任何错误,而且生成的二进制文件比 glibc 生成的二进制文件小得多。
最佳答案
glibc 使用 libnss 来支持许多不同的地址解析服务提供商。不幸的是,您不能静态链接 libnss,因为它加载的具体提供程序取决于本地系统的配置。
关于创建使用 getaddrinfo 的静态链接二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2725255/