因为fdisk不支持gpt,想要在安卓上重新分区就需要用parted,于是必须静态编译parted。这里用了当前最新的parted3.2。
交叉编译器:linaro gcc-linaro-arm-linux-gnueabihf-4.9-2014.07
编译环境:Ubuntu16.04 64位
-
获取libuuid
parted依赖libuuid,首先获取libuuid。
文档说从e2fsprogs 获取,但我参考别人的从util-linux-ng-2.18获取。
下载编译。
- 1
这里只用编译uuid就行了,别给自己找麻烦
- 1
- 2
- 3
即可得到libuuid.a
2.编译parted
- 1
–prefix=pwd/install表示安装在当前的install目录里
注意CFLAGS,LDFLAGS换成你的libuuid安装路径
再make 之前还要打一个补丁,否则编译失败
在libparted/arch目录下,给linux.c打上补丁
- 1
- 2
这时得到的仍然不是静态编译的文件,最后需要手动编译
- 1
可以看到有o a文件,还需要另外的两个libuuid.a libparted.a
- 1
- 2
准备好这些文件就可静态编译了
- 1
编译完成,没有报错,file看一下可以看得是静态链接的
最后strip,减少尺寸
- 1
编译好的:
参考:静态编译libparted.a, parted的艰难历程失去的时空(不知道哪里转的,不贴地址了)