linux编译指定libc路径,g libc.so绝对路径交叉编译错误

博客讲述了在Raspberry Pi文件系统中遇到的问题,即某些.so文件包含链接器脚本而非可链接代码,尤其是当脚本包含绝对路径时会导致链接失败。作者通过编写Perl脚本来转换所有符号链接为相对链接,并修补链接器脚本以使用相对路径。虽然手动操作有效,但在自动化过程中,tar文件会将相对链接转换为绝对链接。作者发现这是tar的特性,并探讨了解决方案。
摘要由CSDN通过智能技术生成

我有同样的问题,大部分都解决了 .

问题是,一些so文件不包含可链接的代码,但包含ld链接器脚本 . 如果此链接描述文件包含绝对引用,则链接将失败 .

我编写了一个小的perl脚本,它将所有符号链接转换为相对链接,并将所以链接器脚本修补为相对路径 .

手动工作非常好,自动化过程使用perl生成tar文件 - 无需在raspberry文件系统上进行更改 .

tar将在sysroot文件夹中的主机上解压缩,所有链接都是固定的,所有这些文件都被修复 .

less /lib/arm-linux-gnueabihf/libc.so.6

你会看到:

/* GNU ld script

Use the shared library, but some functions are only in

the static library, so try that secondarily. */

OUTPUT_FORMAT(elf32-littlearm)

GROUP ( /lib/arm-linux-gnueabihf/libc.so.6 /usr/lib/arm-linux-gnueabihf/libc_nonshared.a AS_NEEDED ( /lib/arm-linux-gnueabihf/ld-linux-armhf.so.3 ) )

就在第一次测试时,我发现tar会将所有相对链接转换为绝对链接,但如果我列出tar文件,则一切都是相对正确的 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值