我正在尝试使用CMake交叉编译ARM64的C ++应用程序。我有一个工作的交叉编译器,可以轻松为ARM64编译hello world。
但是,此特定应用程序具有很多依赖性,例如libxml2。
现在,我可以看到该库已经在debian仓库(https://packages.debian.org/buster/arm64/libxml2/download)中为arm64构建。
但是,似乎没有一种简单的方法可以将它及其依赖项下载到sysroot,我可以将交叉编译器指向它。看来我必须手动下载,解压缩并将其放在我的sysroot中。
是否可以告诉apt
或apt-get
将软件包的arm64
版本下载并安装到特定的sysroot,而不是将其安装到我的主目录中?
其他人如何完成这项基本任务?
答案 0 :(得分:1)
这确实是一项基本任务。问题是apt-get
遵循dpkg
,后者遵循包中的路径。都不了解sysroot的。支持chroot
的尝试有些失败,但是当然,非本地sysroot不能是chroot。
但是,如果您查看软件包中的文件列表,则会看到它已安装到/usr/lib/aarch64-linux-gnu/
。您可以将文件从那里复制到sysroot,也可以使用AUFS / OverlayFS之类的文件(如Docker)来虚拟合并这些目录。
鉴于此hack的“非设计性”性质,将整个交叉编译设置保留在其自己的Docker容器中是有意义的,因此,如果您要覆盖某些本机库,则只需丢弃该容器。这使您免费获得覆盖功能; Docker容器已经从层构建。