如何移植sg3_utils到andriod系统中

本文介绍了如何将sg3_utils工具移植到ARM平台上的Android系统,包括下载源代码、创建独立工具链以及解决编译过程中遇到的问题,如PIE支持。通过交叉编译和配置,最终将sg3_utils成功部署到Android设备。
摘要由CSDN通过智能技术生成

1.本文章遵从” 署名-非商业性使用 2.5 中国大陆 (CC BY-NC 2.5 CN)”

2.  转载或引用本文档中的内容须注明 “资料来源:HB@ Technical Document” 字样




Sg3_utils包含各种可以从用户空间发命令到scsi设备, 这篇文章主要告诉大家如何移植sg3_utils到ARM平台上。 之前我们主要用sg3_utils是在台式机或者直接复制它到目标机上去编译, 但对于大多数嵌入式设备来说, 我们需要交叉编译,尤其是对于android系统, 如果external下面没有所需要的工具包时, 我们必须对它进行交叉编译。为什么要把sg3-utils的交叉编译写一篇文章呢?只要是在我自己交叉编译的过程中,发现了一些问题,这里只是作一个总结,以帮助后来者少走弯路。

Step1: Download sg3_utils source code

 

Sg3_utils的官网是在http://sg.danny.cz/sg/sg3_utils.html,你可以从这里读取第一手的关于sg3_utils的介绍, 我在这里就不啰嗦了。在这个页面的最下方有它的下载地址。对于熟悉github的朋友可以用git clone下载, 你也可以下载压缩版本的。

 

其中要说明的是,上面两个github的下载地址, 一个是来此SUSE公司的Hannes Reinecke, 另一个是来此SDC的Bart Van Assche, 他根据自己的需求有可能会在各自的分支上加入一些自己的应用,anyway, 这两个你可以认选一个,eg”

Git clone https://github.com/bvanassche/sg3_utils.git

 注: 你也可以从我个人的github上下载:

https://github.com/beanhuo/sg3_utils.git   sg3_utils-1.43-for-android

Step 2: Create Standalone Toolchain

这里要说明的是,如果你用linaro的gcc,编译出的来ELF可执行文件,所需要的interpreter的地址是/lib/ld-linux-aarch64.so,而androidinterpreter/system/bin/linker6。你可以把sg3_utils放到external下去编译,但这又需要一些时间。我的方法是构建自己的standalone toolchain来编译。

编译之前我们来下载NDK:

https://developer.android.com/ndk/downloads/older_releases.html#ndk-15c-downloads

这里有好多版本,我建议大家还是下载最新的版本,因为fix了一些之前版本的bug,相对稳定。

如果你用老一版本,很有可能在编译时,会出现下面的问题1:

./include/sg_linux_inc.h:14:25: fatal error: scsi/sg.h: No such file or directory   #include <scsi/sg.h>

他这这里描述的问题是一样的:https://karkhaz.github.io/tuscan/android/sg3_utils.html#162

具体为什么会出现上面的原因,这里我们就不多说了, 我们的最终目的是要编译通过。

OK,我这里下载的是Android NDK, Revision 15c (July 2017),一个最新的版本。

它是一个zip格式的压缩文件,没关系linux可以解压任何格式的压缩文件,只要你想的到。

unzipandroid-ndk-r15c-linux-x86_64.zip

解压完, 我们获得一个android-ndk-r15c的文件夹,它里面就是NDK的源文件。

关于如何创建standa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值