Ubuntu20.04环境下,交叉编译android可运行的trace-cmd工具

本文详细介绍了如何根据Android设备的CPU架构安装相应的交叉编译工具链,包括gcc-arm-linux-gnueabi,以及在编译trace-cmd及其依赖库时的步骤和可能遇到的问题,如strstrip()函数重定义的解决方法。
摘要由CSDN通过智能技术生成

1. 安装交叉编译工具链。

先通过下面的命令查看android系统的CPU架构,通常,Android设备的架构会以诸如"arm64-v8a"、“armeabi-v7a”、"x86"或"x86_64"等形式显示。其中,"arm64-v8a"表示64位ARM架构,"armeabi-v7a"表示32位ARM架构,"x86"表示32位x86架构,"x86_64"表示64位x86架构。

getprop ro.product.cpu.abi

然后根据CPU架构安装所需的工具链,如"armeabi-v7a"需要安装gcc-arm-linux-gnueabi软件包,执行命令:

sudo apt install gcc-arm-linux-gnueabi

2. 下载源码和编译

 # 1.先下载trace-cmd源码
 git clone git://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git
 cd trace-cmd
 # 在trace-cmd目录下打开PACKAGING文件,可以看到在编译trace-cmd之前需要先编译libtraceevent以及libtracefs两个依赖库。接下来参考PACKAGING文件提供的安装流程进行操作
 # 2.下载编译libtraceevent
 cd ..
 git clone git://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git
cd libtraceevent
# trace-cmd定义了编译脚本make-trace-cmd.sh,在使用make编译之前,需要先修改编译参数。修改make-trace-cmd.sh最后一行代码(指定交叉编译器)
PKG_CONFIG_PATH="$INSTALL_PATH/$PKG_PATH" PKG_CONFIG="pkg-config $WITH_PATH --define-variable=prefix=$INSTALL_PATH/$PREFIX" CFLAGS="-I$INSTALL_PATH/$PREFIX/include $CFLAGS" CC=arm-linux-gnueabi-gcc CROSS_COMPILE=arm-linux-gnueabi- make DESTDIR=$INSTALL_PATH  $O_PATH prefix=$PREFIX $@
# 指定install的路径,调用make-trace-cmd.sh进行编译
INSTALL_PATH=/tmp/install ../trace-cmd/make-trace-cmd.sh install
# 3.下载编译libtracefs
cd ..
git clone git://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git
# 编译libtracefs时的make-trace-cmd.sh文件与编译libtraceevent时一致
cd libtracefs
INSTALL_PATH=/tmp/install ../trace-cmd/make-trace-cmd.sh install
# 4.编译trace-cmd。编译trace-cmd时,要加上LDFLAGS=-static,使用静态链接生成trace-cmd,静态链接会将所有依赖项直接嵌入生成的可执行文件中,使其成为独立的、不依赖外部库的可执行文件。修改make-trace-cmd.sh最后一行
PKG_CONFIG_PATH="$INSTALL_PATH/$PKG_PATH" PKG_CONFIG="pkg-config $WITH_PATH --define-variable=prefix=$INSTALL_PATH/$PREFIX" CFLAGS="-I$INSTALL_PATH/$PREFIX/include $CFLAGS" CC=arm-linux-gnueabi-gcc CROSS_COMPILE=arm-linux-gnueabi- LDFLAGS=-static make DESTDIR=$INSTALL_PATH  $O_PATH prefix=$PREFIX $@
cd ../trace-cmd
INSTALL_PATH=/tmp/install ./make-trace-cmd.sh install install_libs

3. 问题记录

在编译trace-cmd时,可能会报strstrip()函数重定义错误,一种解决办法是将trace-cmd中定义的strstrip()函数改为static,然后重新编译即可。

编译完成后会在tracecmd目录下生成trace-cmd可执行程序,push到android手机运行即可。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值