帮助进行 ARM 交叉编译

Joh*_*ott 5 gcc arm cross-compilation

我最近一直在尝试为 ARM 交叉编译程序。但是,当我运行时make,我总是在一分钟或更短的时间内收到一个错误,例如

/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lgio-2.0.
Run Code Online (Sandbox Code Playgroud)

令我困惑的是,每次尝试交叉编译程序时都会遇到该错误(除非它并不总是说它找不到 -lgio-2.0。它也很难找到其他东西)。有什么我做错了吗?为什么总是这个错误?我能够成功交叉编译的唯一程序是 bash,但我在其他所有程序上都遇到了问题。我该怎么办?我已经安装了所有的库和东西,因为我能够很好地本地编译程序。

use*_*.dz 1

正如穆鲁所说。您需要安装该库的 ARM 架构。然而,它们并未在http://packages.ubuntu.com网站上列出。两者都不是,这样手动管理依赖关系很容易。

注意:设置chroot环境,当我将armhf架构添加到 Ubuntu 15.04 amd64 时,我发现了奇怪的行为。我用了dpkg --add-architecture=armhf。APT 开始抱怨软件包损坏wine并尝试删除所有i386软件包。

  1. 添加新的源文件

    sudo nano /etc/apt/sources.list.d/arm-repo.list
    
    Run Code Online (Sandbox Code Playgroud)

    添加您想要的架构的源代码并发布您拥有的版本。

    deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports trusty main universe
    
    Run Code Online (Sandbox Code Playgroud)

    在此处检查可用的拱门: http://ports.ubuntu.com/ubuntu-ports/dists/trusty/main/,因为您可以向上/向下浏览不同的版本。

  2. 更新包列表

    sudo apt-get update
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加 dpkg 配置

    sudo nano /etc/dpkg/dpkg.cfg.d/multiarch
    
    Run Code Online (Sandbox Code Playgroud)

    用这条线

    foreign-architecture armhf
    
    Run Code Online (Sandbox Code Playgroud)
  4. 根据需要安装需要的包,例如:

    sudo apt-get install libglib2.0-0:armhf
    
    Run Code Online (Sandbox Code Playgroud)

参考: