在x64 Ubuntu主机上获取arm的dev库包?

时间:2016-09-04 11:15:08

标签: linux ubuntu arm static-libraries apt

我正在构建一个需要大量库的项目,对于windows我从MSYS2获得了预构建的lib,从ubuntu repos获取了linux,现在我移植到了android,所以我需要{{1}的相同库}和armhf。好消息是ubuntu repos拥有我需要的一切,坏消息 - 我无法弄清楚如何使用arm64来获取它们,即获取具有整个依赖树的lib。可以从Web下载单个软件包,但是获取整个依赖树,从源代码构建库变得非常困难 - 更是如此。

即使我在64位主机上,我也能为apt执行sudo apt-get install package:uarch,但是当我尝试手臂时,我会得到i386。那我怎么得到它们呢?

注1:我只需要库,我不需要工具链,NDK已经有了这些。

注意2:我确实尝试过在ubuntu网站上询问,但我没有得到任何反馈,因为问题严格来说就是开发,我决定尝试一下。

注3:问题不在于推荐图书馆。

编辑:在unable to locate package更新后,我得到:

dpkg --add-architecture armhf

1 个答案:

答案 0 :(得分:1)

与Debian不同,Ubuntu档案已经没有把所有东西都放在正确的位置,实际上非x86软件包完全保存在其他地方。首先要做的是编辑/etc/apt/sources.lst,将ports.ubuntu.com与archive.ubuntu.com/ubuntu一起添加到您想要的存储库中,例如:为:

deb http://bg.ports.ubuntu.com/ xenial main restricted

等效的端口仓库是:

dpkg --add-architecture armhf

有了这些,

deb [arch=i386,amd64] http://archive.ubuntu.com...
deb [arch=armhf] http://ports.ubuntu.com...

(根据其他架构重复),然后照常更新,就可以了。我已经在16.04.1的全新安装中证实了这一点,但我很确定这同样适用于12.04。

the multiarch documentation,您可以关闭"忽略"和"未找到"通过将条目限制在相关架构中而产生错误,即:

#include<iostream>
int main()
{
    int arr[1] = {0x80000000};
    std::cout<<arr[0]<<"\n";
    return 0;
}

作为参考,Debian's census report有一个方便的摘要。