我希望交叉编译一个使用GNU autotools构建系统的现有库。我在我的主机上安装了一个Linaro arm-gcc工具链,我可以使用arm-gcc直接编译小程序。
我有一个库源代码,它有configure.ac和Makefile.am文件。我想在主机上编译此代码并生成可以复制到目标平台的ARM二进制文件。
这样做的规范方法是什么?
具体来说,我正在寻找适用于使用arm-linux-gnueabi-gcc和autotools进行交叉编译的“Hello World”应用程序/库的东西。
答案 0 :(得分:3)
--build=`./config.guess` --host=arm-linux-gnueabi
可能就足够了,因为它会寻找相应的ARM工具链。否则,请尝试添加:CC="arm-linux-gnueabi-gcc"
您还可以添加:CFLAGS="-pipe -Wall -O2 ... <other arm-gcc flags>"
为了更好的代码优化。
答案 1 :(得分:1)
在Ubuntu上执行此操作的正确方法是使用发行版提供的交叉编译器,而不是像Linaro那样的第三方编译器。当发行版由于某种原因不够好时,你只需要一个out-of-distro包(比如你需要一些只在Linaro工具链中而且还没有在发行版中的尖端功能)。几乎没有人需要这样做。
使用以下命令安装gcc,g ++ crosstollchains,cross libc和一些配置工具:
apt install crossbuild-essential-armhf
如果您要构建的软件只需要C运行时库,那么您可以按原样构建它。如果它需要更多,那么您需要安装跨构建依赖项。
如果您要构建的软件已打包(并称为$packagename
),您应该能够:
dpkg --add-architecture armhf
apt update
apt build-dep $packagename
然后用
构建它dpkg-buildpackage -aarmhf
如果没有打包,您需要安装构建依赖项,arch armhf库,本机arch(通常是amd64或arm64)工具。例如:
apt-get install sgmltools ghostscript libpng-dev:armhf libssl-dev:armhf
为armhf安装原始ghostscript
和sgmltools
(用于文档构建)和libpng
和libssl
的标头/库。
更多详情on the Debian wiki。