我希望交叉编译一个使用GNU autotools构建系统的现有库 . 我在我的主机上安装了一个Linaro arm-gcc工具链,我可以使用arm-gcc直接编译小程序 .
-
Host machine: Ubuntu 12.04 Intel x64
-
Target machine: Ubuntu 14.04 ARM 32位(类似于Raspberry-Pi的主板)
我有一个库源代码,它有configure.ac和Makefile.am文件 . 我想在主机上编译此代码并生成可以复制到目标平台的ARM二进制文件 .
这样做的规范方法是什么?
具体来说,我正在寻找一些适用于使用arm-linux-gnueabi-gcc和autotools进行交叉编译的“Hello World”应用程序/库的东西 .
2 回答
可能就足够了,因为它会寻找相应的ARM工具链 . 否则,请尝试添加:
CC="arm-linux-gnueabi-gcc"
您还可以添加:
CFLAGS="-pipe -Wall -O2 ... <other arm-gcc flags>"
为了更好的代码优化 .
在Ubuntu上执行此操作的正确方法是使用发行版提供的交叉编译器,而不是像Linaro那样的第三方编译器 . 当发行版由于某种原因不够好时,你只需要一个out-of-distro包(比如你需要一些只在Linaro工具链中而且还没有在发行版中的尖端功能) . 几乎没有人需要这样做 .
使用以下命令安装gcc,g crosstollchains,cross libc和一些配置工具:
如果您要构建的软件只需要C运行时库,那么您可以按原样构建它 . 如果它需要更多,那么您需要安装跨构建依赖项 .
$packagename
),您应该能够:然后用它构建它
将安装本机
ghostscript
和sgmltools
(用于文档构建)和头文件/库为libpng
和libssl
for armhf .更多细节on the Debian wiki .