glibc静态链接 libc.a(nsswitch.o)(.data+0x64):undefined reference to `_nss_files_getaliasent_r' 错误解决方法

编译tielra平台的busybox时报这个错误. 必须手动添加 -lc -lnss_files -lnss_dns -lresolv(-Wl,--start-group -lc -lnss_files -lnss_dns -lresolv -Wl,--end-group)作为链接参数..

这个貌似是glibc编译时的一个bug.

不过在网上找到问题的一个灵巧解决方法,  可以避免手动添加链接参数问题.. :)

 

将原来的libc.a静态库修改为libc_ns.a

# mv /usr/lib/libc.a /usr/lib/libc_ns.a

重新创建libc.a, 不过是创建一个链接脚本, 将libnss_files.a, libnss_dns.a, libresolv.a都加入

# cat > /usr/lib/libc.a <<EOF

/* GNU ld script   Use the static library, but some functions are in other strange   libraries :-( So try them secondarily. */

GROUP ( /usr/lib/libc_ns.a /usr/lib/libnss_files.a /usr/lib/libnss_dns.a /usr/lib/libresolv.a )

EOF


重新编译链接即可.

 

原文地址: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=76451

还有1种方法是给glibc打补丁.

http://crosstool-ng.net/hg/crosstool-ng/diff/7657175fcb8c/patches/glibc/ports-2.12.1/250-fix-pr631.patch

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/glibc/2.5/1090_all_glibc-2.3.6-fix-pr631.patch?view=diff&r1=text&tr1=1.1&r2=text&tr2=1.1&diff_format=s

貌似也能解决, 不过就没去试啦.. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值