我正在使用gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux工具在ubuntu pc上交叉编译arm目标 .
如果将libc.so放置在库搜索路径中的目标中,则链接器会出错:
cannot find /lib/arm-linux-gnueabihf/libc.so.6
如果我删除了这个libc.so,那么链接过程就完成了,没有错误 .
似乎libc.so库中的绝对路径可能存在符号链接 . 这是我收到链接器错误的原因吗?
如果是,是否有办法修改符号链接?
1 回答
我有同样的问题,大部分都解决了 .
问题是,一些so文件不包含可链接的代码,但包含ld链接器脚本 . 如果此链接描述文件包含绝对引用,则链接将失败 .
我编写了一个小的perl脚本,它将所有符号链接转换为相对链接,并将所以链接器脚本修补为相对路径 .
手动工作非常好,自动化过程使用perl生成tar文件 - 无需在raspberry文件系统上进行更改 .
tar将在sysroot文件夹中的主机上解压缩,所有链接都是固定的,所有这些文件都被修复 .
你会看到:
就在第一次测试时,我发现tar会将所有相对链接转换为绝对链接,但如果我列出tar文件,则一切都是相对正确的 .
Tar changes relative symlinks to absolute symlinks