我正在构建一个需要大量库的项目,对于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
答案 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有一个方便的摘要。