我最近一直在尝试交叉编译 ARM 程序。但是,当我运行 时make
,我总是在一分钟或更短的时间内收到错误,内容如下
/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lgio-2.0.
让我困惑的是,每次我尝试交叉编译程序时都会出现这个错误(除了它并不总是说它找不到 -lgio-2.0。它在查找其他东西时也遇到了麻烦)。我做错了什么吗?为什么总是出现这个错误?我能够成功交叉编译的唯一程序是 bash,但其他所有程序都出现了问题。我该怎么办?我已经安装了所有库和东西,因为我能够很好地本地编译程序。
答案1
正如 muru 所说。您需要安装该库的 ARM 体系结构。但它们未在http://packages.ubuntu.com站点。两者都不是,这样可以很容易地手动管理依赖关系。
笔记:设置环境,当我将架构添加到我的 Ubuntu 15.04 amd64chroot
时,我发现了奇怪的行为。我使用了。APT 开始抱怨包损坏并试图删除所有包。armhf
dpkg --add-architecture=armhf
wine
i386
添加新的源文件
sudo nano /etc/apt/sources.list.d/arm-repo.list
添加您想要的架构的来源并发布您拥有的版本。
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports trusty main universe
在这里检查可用的拱门: http://ports.ubuntu.com/ubuntu-ports/dists/trusty/main/您可以向上/向下浏览不同的版本。
更新包列表
sudo apt-get update
添加 dpkg 配置
sudo nano /etc/dpkg/dpkg.cfg.d/multiarch
用这行
foreign-architecture armhf
根据需要安装需要的包,例如:
sudo apt-get install libglib2.0-0:armhf
参考:
答案2
您也可以下载该软件包,使用 arm-linux-gnueabihf 进行交叉编译,并将库放在 /usr/ 中 arm-linux-gnueabihf 编译器目录的相应文件夹中