在主机上安装目标库

问题描述 投票:1回答:1

我正试图用CMake交叉编译一个ARM64的C++应用程序。我有一个可以使用的交叉编译器,可以很容易地编译hello world for ARM64。

然而,这个特殊的应用程序有很多依赖性,比如libxml2。

现在,我可以看到这个库已经在debian repos中为arm64编译了(https:/packages.debian.orgbusterarm64libxml2download).

然而,似乎没有一个简单的方法可以将它和它的依赖项下载到我可以指向交叉编译器的sysroot中。似乎我必须手动下载、解压并把它放在我的系统根中。

有什么方法可以让我知道 aptapt-get 下载并安装 arm64 版本的软件包到一个特定的系统根目录,而不是安装到我的主目录?

其他人是如何完成这个基本任务的?

ubuntu cmake cross-compiling apt-get arm64
1个回答
1
投票

这的确是一个基本任务。问题是 apt-get 听从 dpkg 中的路径。都不懂sysroot的。有一个半吊子的尝试,就是支持 chroot当然,非本地的sysroot不能成为chroot。

不过,如果你看一下软件包中的文件列表,你会发现它是安装到了 /usr/lib/aarch64-linux-gnu/. 你可以把那里的文件复制到sysroot,或者使用(像Docker一样)类似AUFSOverlayFS的东西来虚拟合并这些目录。

考虑到这个黑客的 "非设计工作 "性质,将整个交叉编译设置保留在自己的Docker容器中是有意义的,所以如果你要覆盖一些本地库,你只需丢弃这个容器。这样你就可以免费获得该覆盖功能,Docker容器已经从层构建。

© www.soinside.com 2019 - 2024. All rights reserved.