【问题标题】:How to install libbz2 in cross compiler g++-arm-linux-gnueabifh on Ubuntu 14.04如何在 Ubuntu 14.04 上的交叉编译器 g++-arm-linux-gnueabifh 中安装 libbz2
【发布时间】:2015-12-16 08:13:38
【问题描述】:

我在 amd64 机器上使用 arm-linux-gnueabihf-g++-4.8 来交叉编译针对 ARM 32 位架构的 boost。我的操作系统是 Ubuntu 14.04。

因为编译器没有自带 libbz2,所以编译 liblibboost_iostreams 失败。以下是错误详情,

/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/bin/ld:找不到-lbz2 collect2: error: ld 返回 1 个退出状态。

很难弄清楚如何为 arm-linux-gnueabihf-g++-4.8 安装这个 libbz2。网上没找到太多文档。需要一些帮助。非常感谢!

【问题讨论】:

  • 交叉链接库的标准清单:您是否已经在目标上安装了 libbz2(或允许您轻松完成的发行版)?如果是这样,请使用它(或者复制它,或者更好地使用指向目标文件系统的 --sysroot 进行交叉编译)。否则,只需 grab the source 并交叉编译它!检查 makefile(s) 以查看它们是否允许交叉编译器前缀,或者您必须自己编辑 $CC 等变量,并且不要期望任何可执行的自测通过;)

标签: c++ linux ubuntu arm cross-compiling


【解决方案1】:

我会从 Debian jessie 存储库安装 libbz2-1.0:armhf。

实际上,它也存在于 Ubuntu 存储库中。

配置包管理器来管理 ARM 包:

sudo dpkg --add-architecture armhf

Ubuntu 14.04 代号为“trusty”,因此通过将行添加到 /etc/apt/sources.list 文件中来添加 ARM 存储库以获得 trusty:

deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports trusty main

然后更新包索引:

sudo apt-get update

为 ARM 安装 libbz2(但如果它要求删除任何软件包,则中止):

sudo apt-get install libbz2-1.0:armhf

如果apt-get 要求删除系统的一半以安装像 libc6:armhf、libgcc:armhf、build-essential:armhf 等大的东西,那么前面会有一个依赖关系解析会话。没有确切的指南。

另外,一件小事:您可能希望将 [arch=amd64,i386] 注释添加到 /etc/apt/sources.list 中的所有其他存储库以避免警告。

【讨论】:

  • 谢谢。我是 Debain 的新手,你能给我一些细节吗,比如我需要运行的命令或我可以遵循的一些在线文档?
  • @CodingForFun15,该软件包也在 Ubuntu 存储库中。更新了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 2017-07-05
  • 1970-01-01
相关资源
最近更新 更多