首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tar将相对符号链接更改为绝对符号链接

问Tar将相对符号链接更改为绝对符号链接
EN

Stack Overflow用户
提问于 2018-03-31 06:17:22
回答 1查看 1.1K关注 0票数 1

为了简化交叉编译的sysroot生成,我生成了一个带有相对符号链接的tar文件。

如果我用以下命令打印tar上下文

代码语言:javascript
复制
tar tvf sysroot-libc6-dev.tar

然后我得到了正确的结果:

代码语言:javascript
复制
lrw-r--r-- jens/jens         1 2018-03-30 23:42 usr/lib/x86_64-linux-gnu/libBrokenLocale.so -> ../../../lib/x86_64-linux-gnu/libBrokenLocale.so.1
lrw-r--r-- jens/jens         1 2018-03-30 23:42 usr/lib/x86_64-linux-gnu/libanl.so -> ../../../lib/x86_64-linux-gnu/libanl.so.1
lrw-r--r-- jens/jens         1 2018-03-30 23:42 usr/lib/x86_64-linux-gnu/libcidn.so -> ../../../lib/x86_64-linux-gnu/libcidn.so.1

如果我用以下命令解压tar归档文件

代码语言:javascript
复制
tar xvf sysroot-libc6-dev.tar

然后符号链接是绝对的,这是混乱的,因为这样sysroot目录指向我的主机,交叉编译将无法工作。

代码语言:javascript
复制
ls -al

lrwxrwxrwx 1 jens jens      33 Jan 14 11:39 libanl.so -> /lib/x86_64-linux-gnu/libanl.so.1
lrwxrwxrwx 1 jens jens      42 Jan 14 11:39 libBrokenLocale.so -> /lib/x86_64-linux-gnu/libBrokenLocale.so.1
lrwxrwxrwx 1 jens jens      34 Jan 14 11:39 libcidn.so -> /lib/x86_64-linux-gnu/libcidn.so.1

脚本的目的是保持一切相对,以及链接器脚本,例如libc.so将被打补丁到相对链接。

提前感谢

延斯·里博尔德

EN

回答 1

Stack Overflow用户

发布于 2018-04-01 15:00:07

我发现了我的帖子的问题。只有当符号链接的目标也在tar归档中时,tar才会设置相对链接。

raspberry pi的交叉编译的问题是库的绝对符号链接和ld脚本中的绝对路径。(SO文件)。

如果你将预构建库从raspberry pi复制到你的交叉编译项目中,那么你必须解决这个问题。在我的项目中,我花了一些时间来理解奇怪的链接器问题。

该项目的工作方式如下:

代码语言:javascript
复制
sync_package.pl <debian package name>

输出是一个tar文件,其中包含ld脚本中的相对链接和相对路径。

示例:

代码语言:javascript
复制
sync_package.pl libmodbus-dev

输出:

代码语言:javascript
复制
sysroot-libmodbus-dev.tar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49582114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档