android 静态链接libc,静态链接任何库会导致libc无法链接

我的系统是运行2.6.32的旧NAS . 我发现当对任何后续库使用-static时,它也会尝试静态链接我可能需要的任何其他库 .

当我首先添加-Wl,-Bdynamic标志然后使用-lc显式命名这些库时,例如“-Wl,-Bdynamic -lc -lstdc”,那么它可以工作 . 所以会发生什么是libc和其他人无法静态链接 .

系统上的静态libc称为 /opt/lib/libc_nonshared.a.

/opt/lib/libc.so的内容是这样的:

OUTPUT_FORMAT(elf32-littlearm)

GROUP ( /lib/libc.so.6 /opt/lib/libc_nonshared.a )

gcc版本是4.2.3 . 我面临的当前构建命令在最后添加 -dynamic 但这没有多大帮助 . 当我使用.a名称直接添加一些静态库,而不是使用-l标志时,则没有问题 .

问题似乎是libc的动态库随NAS一起提供,但静态版本位于/ opt / lib中 .

我跑:

gcc hamming.c -static -L. -L/opt/lib -l:matrix.a -o hamming

我明白了:

/opt/lib/gcc/arm-none-linux-gnueabi/4.2.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lc

collect2: ld returned 1 exit status

make: *** [hamming] Error 1

当我尝试按原样使用静态libc时 . 如果我执行'hack'将libc_nonshared.a链接到libc.a,它会突然找到它 . 但抱怨:

hamming.c:54: undefined reference to `malloc'

hamming.c:54: undefined reference to `memset'

当然还有其他的错误 . 如上所述,/ opt / libc.so包含对这两个文件的引用(动态和静态) .

对于libstdc,只存在.la文件 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值