我正在为i686 linux机器人系统构建一个跨工具链。我正在使用x86_64 ubuntu 14.04系统构建工具链。在为目标i686-linux-gnu
构建工具链之后,我在构建目录中找到一个名为i686-linux-gnu
的目录。此目录似乎有许多文件夹位于目标系统的根目录中:
生成目录
i686 Linux GNU
箱子
等
包括
图书馆
libexec公司
斯宾
分享
风险价值
我假设这些是与构建的工具链相对应的支持文件,并且这些文件打算存在于目标系统上。
我曾尝试简单地将这些目录复制到目标系统的根/
,覆盖任何现有文件。这带来了灾难性的结果。例如,由于缺少/不正确的库搜索路径,我无法运行ls
或sudo
。所以我现在有两个问题:
我是否正确地将这些库部署到目标系统?如果没有,正确的部署步骤是什么?
如果这是正确的部署过程,为什么我的搜索路径会断开?系统不应该继续使用默认的搜索路径吗?
我的工具链构建脚本也可以在pastebin上使用(由于大小)。
最佳答案
这个问题有点模糊,所以我在做一些假设。我假设您是从头开始创建一个工具链,并且只在pastebin上使用该脚本。
我还假设您打算替换这个设备上的整个文件系统。
您的脚本没有为ls或sudo安装二进制文件,对于嵌入式系统,通常使用busybox来安装。
我还建议您研究一下buildroot,它比从头开始构建自己的工具链要简单得多,一些供应商告诉我在将库编译到其嵌入式系统时应该使用它。
如果您真的只想部署一些库:
这看起来不像正确的过程,您的工具链可能已经创建了为空根文件系统做准备的默认文件。你应该试着只复制你感兴趣的图书馆,以及与之相关的东西。不知道你在说什么图书馆是很难说的
看看您是否有一个类似/etc/ld.so.conf的文件和/或一个名为/etc/ld.so.conf.d的目录
这是CentOS系统中的库搜索路径。
关于linux - 为跨工具链部署库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34520970/