Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何为ARM交叉编译autotools项目?_Linux_Arm_Cross Compiling_Gnu Make_Autotools - Fatal编程技术网

Linux 如何为ARM交叉编译autotools项目?

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二进制文件 这样做的标准方法是什么 具体来说,我正在寻找一些可以用

我希望交叉编译一个使用GNU autotools构建系统的现有库。我的主机上安装了Linaro arm gcc工具链,我能够直接使用arm gcc编译小程序

  • 主机:Ubuntu 12.04英特尔x64
  • 目标机器:Ubuntu 14.04 ARM 32位(类似于Raspberry Pi的板)
我有一个库源代码,其中包含configure.ac和Makefile.am文件。我想在主机上编译这段代码,并生成可以复制到目标平台的ARM二进制文件

这样做的标准方法是什么

具体来说,我正在寻找一些可以用于使用arm linux gnueabi gcc和autotools交叉编译的C语言“Hello World”应用程序/库的东西

--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
    libssl
    的标题/库(用于armhf)


更多详细信息。

您能提供要交叉编译的库名吗?它是一个专有的库代码,不向公众开放。我正在寻找一个适用于需要使用autotools和arm linux gnueabi gccdoes交叉编译的“任何”库的答案,该库具有配置文件?有标准的autotool变量;但是,为了使一切都变得完美,自动工具的输入必须正确(即projects configure.ac等)。您可以使用
--host=
--build=
选项。可以过度使用,以添加编译器前缀、添加包含目录等。对于包含和链接,可能需要使用影子rootfs。因为软件是不同的,所以没有标准的方法。提供真实问题。当然,我知道autotools中有
--host
--build
选项,但我找不到关于如何使用这些选项的好教程。的确,不同库的需求可能不同。我正在寻找一种适用于C语言中的“Hello World”应用程序的东西,因此我可以将其用于更复杂的软件。我认为交叉编译时最重要的标志之一是
--sysroot
,以便找到正确的头和库。您应该提供为交叉编译设置它的详细信息。