在主机上安装目标库

时间:2019-10-11 19:38:51

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

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

但是,此特定应用程序具有很多依赖性,例如libxml2。

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

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

是否可以告诉aptapt-get将软件包的arm64版本下载并安装到特定的sysroot,而不是将其安装到我的主目录中?

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

1 个答案:

答案 0 :(得分:1)

这确实是一项基本任务。问题是apt-get遵循dpkg,后者遵循包中的路径。都不了解sysroot的。支持chroot的尝试有些失败,但是当然,非本地sysroot不能是chroot。

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

鉴于此hack的“非设计性”性质,将整个交叉编译设置保留在其自己的Docker容器中是有意义的,因此,如果您要覆盖某些本机库,则只需丢弃该容器。这使您免费获得覆盖功能; Docker容器已经从层构建。