sg3_utils arm64 静态编译

文章介绍了在对ufs设备进行测试时,如何将sg3_utils编译为静态可执行程序,以便在arm64设备上直接运行,无需依赖额外的动态库。通过下载sg3_utils源码,配置交叉编译参数,并修改src/Makefile以生成静态链接的可执行文件,最后通过adbpush将编译后的文件推送到设备端。
摘要由CSDN通过智能技术生成

需求背景

在进行ufs等scsi device测试时,需要进行power mode切换等测试,因此需要有一个简单地工具集来向scsi device(ufs接口)发送scsi命令,比如 scsi reset命令等。在网上调研后发现sg3_utils是一个比较全面的工具。 但是sg3_utils需要在android上运行还要依赖很多动态库。因此本文介绍一种方法,将sg3_utils编译为静态可执行程序,然后adb push到arm64设备端,无需依赖任何so即可执行。

下载sg3_utils-1.46并解压

运行configure命令

./configure CFLAGS=-static LDFLAGS=-static --prefix=/home/alex/Projects/sg3_utils-1.46/out/ --host=aarch64-linux-gnu LD=aarch64-linux-gnu-ld CC=aarch64-linux-gnu-gcc

交叉编译设置

./configure CFLAGS=-static LDFLAGS=-static --prefix=/home/alex/Projects/sg3_utils-1.46/out/ --host=aarch64-linux-gnu LD=aarch64-linux-gnu-ld CC=aarch64-linux-gnu-gcc

上述命令执行后,会生成Makefile和src/Makefile

 

修改src/Makefile中的libtool 在link mode时,生成静态可执行程序;这样libtool在生成脚本时会加入-static 来做静态链接。

注意

(1)-all-static 只能加载gcc后面,并且在libtool中使用;

(2)gcc不支持-all-static选项(这是libtool的选项)。不要添加。

make & make install

运行玩上述命令后, 可执行文件会被安装在prefix指定的目录下。可通过file命令,确认可执行文件的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值