Dan*_*aks 5 make cross-compilation
我了解使用交叉编译器在一种架构上编译代码,然后将可执行文件复制到另一种架构以运行它的基本概念。但是我无法弄清楚./configure; make; make install
交叉编译上下文中典型序列的最后一步。
例如,我想使用我的 Ubuntu PC 为 ARM 设备交叉编译 libusb。我下载了 libusb 源代码,运行了 configure 和 make:
> ./configure --disable-udev --host=arm-linux-gnueabihf CC=/usr/bin/arm-linux-gnueabi-gcc
> make
Run Code Online (Sandbox Code Playgroud)
在这一点上,我有一堆针对 ARM 架构的 libusb 编译二进制文件。理想情况下,我想将这些二进制文件复制到 ARM 设备并运行,make install
这样我就不必手动将它们复制到目标目录中。但这意味着我必须从 Ubuntu 计算机复制整个构建环境,这似乎是在浪费时间和磁盘空间。或者我可以只收集二进制文件和适当的 Makefile 并复制它们,但这看起来很笨拙。
有没有更优雅的方式来利用make install
目标架构?
是的,至少对于基于 Autotools 的构建系统,这里使用的(可能还有其他一些);这些支持一个DESTDIR
变量,该变量可用于安装除/
.
mkdir destdir
make DESTDIR="${PWD}/destdir" install
Run Code Online (Sandbox Code Playgroud)
这将为您提供目标二进制文件(和随附文件)destdir
;然后,您可以将其复制到目标设备的/
.
归档时间: |
|
查看次数: |
4341 次 |
最近记录: |