1

我正在为 i686 linux 机器人系统构建一个交叉工具链。我正在使用我的 x86_64 Ubuntu 14.04 系统构建工具链。在为目标构建工具链之后i686-linux-gnu,我最终在构建目录中创建了一个名为i686-linux-gnu. 该目录似乎有许多文件夹位于目标系统的根目录中:

  • build_directory
    • i686-linux-gnu
      • 垃圾桶
      • ETC
      • 包括
      • 执行程序
      • 斯宾
      • 分享
      • 变量

我的假设是这些是与构建的工具链相对应的支持文件,并且这些文件旨在存在于目标系统上

我尝试简单地将这些目录复制到/目标系统的根目录中,覆盖任何现有文件。这带来了灾难性的结果。例如,我无法运行lssudo由于缺少/不正确的库搜索路径。所以我现在有两个问题:

  1. 我是否将这些库正确部署到目标系统?如果不是,正确的部署程序是什么?

  2. 如果这正确的部署过程,为什么我的搜索路径会损坏?系统不应该继续使用默认搜索路径/lib/usr/lib等吗?

我的工具链构建脚本也可以在pastebin上使用(由于大小)。

4

1 回答 1

1

这个问题有点模糊,所以我在做一些假设。我假设您正在从头开始创建工具链,并且您仅在 pastebin 上使用该脚本。

我还假设您打算替换此设备上的整个文件系统。

您的脚本没有为 ls 或 sudo 安装二进制文件,对于嵌入式系统,通常使用 busybox 来处理这些文件。

我还想建议您研究一下 buildroot,它比从头开始构建自己的工具链要容易得多,而且一些供应商告诉我在将库编译到他们的嵌入式系统时要使用它。


如果你真的只想部署一些库:

这看起来不像正确的过程,您的工具链可能已经创建了默认文件,为空的根文件系统做准备。您应该尝试仅复制您感兴趣的库以及与之相关的内容。不知道你在说什么库很难说

看看你是否有像 /etc/ld.so.conf 这样的文件,和/或一个名为 /etc/ld.so.conf.d 的目录,这是 centos 系统中库搜索路径所在的位置。

于 2015-12-30T18:16:21.087 回答