Linux 如何为ARM交叉编译autotools项目?
我希望交叉编译一个使用GNU autotools构建系统的现有库。我的主机上安装了Linaro arm gcc工具链,我能够直接使用arm gcc编译小程序Linux 如何为ARM交叉编译autotools项目?,linux,arm,cross-compiling,gnu-make,autotools,Linux,Arm,Cross Compiling,Gnu Make,Autotools,我希望交叉编译一个使用GNU autotools构建系统的现有库。我的主机上安装了Linaro arm gcc工具链,我能够直接使用arm gcc编译小程序 主机:Ubuntu 12.04英特尔x64 目标机器:Ubuntu 14.04 ARM 32位(类似于Raspberry Pi的板) 我有一个库源代码,其中包含configure.ac和Makefile.am文件。我想在主机上编译这段代码,并生成可以复制到目标平台的ARM二进制文件 这样做的标准方法是什么 具体来说,我正在寻找一些可以用
- 主机:Ubuntu 12.04英特尔x64
- 目标机器:Ubuntu 14.04 ARM 32位(类似于Raspberry Pi的板)
--build=`./config.guess` --host=arm-linux-gnueabi
可能就足够了,因为它将寻找相应的手臂工具链。否则,请尝试添加:CC=“arm linux gnueabi gcc”
您还可以添加:CFLAGS=“-pipe-Wall-O2…”
为了更好地优化代码。在Ubuntu上这样做的正确方法是使用发行版提供的交叉编译器,而不是像Linaro这样的第三方编译器。只有当发行版由于某种原因不够好时,才需要发行版外的软件包(例如,您需要一些仅在Linaro工具链中而尚未在发行版中的尖端功能)。几乎没有人需要这样做 安装gcc、g++crosstollchains、CrossLibc和一些配置工具,包括:
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
和ghostscript
(用于文档构建)以及sgmltools
和libpng
的标题/库(用于armhf)libssl
更多详细信息。您能提供要交叉编译的库名吗?它是一个专有的库代码,不向公众开放。我正在寻找一个适用于需要使用autotools和arm linux gnueabi gccdoes交叉编译的“任何”库的答案,该库具有配置文件?有标准的autotool变量;但是,为了使一切都变得完美,自动工具的输入必须正确(即projects configure.ac等)。您可以使用
--host=
和--build=
选项。可以过度使用,以添加编译器前缀、添加包含目录等。对于包含和链接,可能需要使用影子rootfs。因为软件是不同的,所以没有标准的方法。提供真实问题。当然,我知道autotools中有--host
和--build
选项,但我找不到关于如何使用这些选项的好教程。的确,不同库的需求可能不同。我正在寻找一种适用于C语言中的“Hello World”应用程序的东西,因此我可以将其用于更复杂的软件。我认为交叉编译时最重要的标志之一是--sysroot
,以便找到正确的头和库。您应该提供为交叉编译设置它的详细信息。