【问题标题】:Installing Target Libraries on Host在主机上安装目标库
【发布时间】:2019-10-11 19:38:51
【问题描述】:

我正在尝试使用 CMake 为 ARM64 交叉编译 C++ 应用程序。我有一个可以工作的交叉编译器,可以轻松为 ARM64 编译 hello world。

但是,这个特定的应用程序有很多依赖项,比如 libxml2。

现在,我可以看到这个库已经在 debian repos (https://packages.debian.org/buster/arm64/libxml2/download) 中为 arm64 构建了。

但是,似乎没有一种简单的方法可以将它及其依赖项下载到我可以将交叉编译器指向的 sysroot。看来我必须手动下载、解压缩并将其放入我的 sysroot 中。

有没有办法让aptapt-get 下载并安装arm64 版本的软件包到特定的sysroot,而不是安装到我的主目录?

其他人如何完成这项基本任务?

【问题讨论】:

    标签: ubuntu cmake cross-compiling apt-get arm64


    【解决方案1】:

    这确实是一项基本任务。问题是 apt-get 推迟到 dpkg 推迟到包中的路径。两者都不理解 sysroot 的。支持chroot 的尝试是半途而废的,但当然非本地 sysroot 不能是 chroot。

    但是,如果您查看软件包中的文件列表,您会看到它安装到 /usr/lib/aarch64-linux-gnu/。您可以将文件从那里复制到 sysroot,或者使用(如 Docker)类似 AUFS/OverlayFS 的东西来虚拟合并这些目录。

    鉴于这种 hack 的“不适合工作”的性质,将整个交叉编译设置保留在自己的 Docker 容器中是有意义的,因此如果您要覆盖一些本机库,您只需丢弃该容器。这可以免费为您提供叠加功能; Docker 容器已经从层构建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 2021-10-11
      • 2020-05-06
      • 1970-01-01
      • 2017-07-30
      • 2014-01-26
      • 2012-01-14
      • 1970-01-01
      相关资源
      最近更新 更多