一种快速移植开源软件的方法

以前用的两种软件移植的方法

有时候需要将X86上的一些开源软件移植到ARM平台上,而移植的方法无外乎两种方式:

  • 通过交叉编译工具链进行交叉编译
  • 在ARM平台上直接用arm版本的工具链编译

对于第一种方法,移植一些小东西还是可以的,当移植的软件有一大堆的库依赖,而依赖的库又依赖更多的库,难度可想而知。

第二种方法,理想非常好,但是现实中往往无法得到这样的环境。比如CPU,内存, 等限制。我曾经试图在ARM芯片上编译ceph服务端软件,最终由于CPU和内存的双重限制,立马就放弃了。

我今天要讲的第三种方法:

这种方法就是用qemu来模拟ARM芯片,然后在INTEL的X86服务器上去编译要移植到ARM平台的软件。

这种方式的优点:

  • 可以借助于强大的X86服务器,即使是QEMU模拟的系统,效率依然可观
  • 不需要交叉编译,直接给你一个ARM的编译系统,Debian阵营提供了大量的arm软件,很多可以直接利用

具体移植的步骤:

  • 制作一个debian的rootfs
  • 用qemu运行这个debain系统
  • 用这个debain系统像x86系统一样,编译你要的软件

例如,在ubuntu上

sudo apt install qemu qemu-system-arm qemu-user-static

#用debootstrap制作debain rootfs, 过程自行百度。我制作的debain目录为~/debain-stretch
sudo apt-get install debootstrap

#通过chroot进入
chroot ~/debain-stretch
#执行后,就相当于一个ARM的debain系统了,可以用这个系统移植你的软件了
 
#例如移植你自己的ceph服务端,需要依赖,就直接
apt install libtool automake cmake gcc g++ cython snappy
apt install xxxxxxx
 ...

总结

在移植一些大块头软件,如移植以太坊C++版本,ceph这类的大块头软件,这种方式还是很快的。

猜你喜欢

转载自blog.csdn.net/yinmingxuan/article/details/86672973
今日推荐