如何交叉编译strace工具

 1. strace是一款非常强大的调试用户程序的工具,如在嵌入式平台使用,则需要对其进行交叉编译;

    2. 以ARM及PPC平台为例,编译strace-4.5.18;

    • ARM平台(arm-linux-gcc)
      • CC=arm-linux-gcc LD=arm-linux-ld RANLIB=arm-linux-ranlib ./configure --host=arm-linux --target=arm-linux
    • PPC平台(ppc-linux-)
      • CC=ppc_82xx-gcc LD=ppc_82xx-ld RANLIB=ppc_82xx-ranlib ./configure --host=powerpc-linux --target=powerpc-linux
    • DaVinCi平台(arm_v5t_le-gcc)
      • CC=arm_v5t_le-gcc LD=arm_v5t_le-ld RANLIB=arm_v5t_le-ranlib ./configure --host=arm-linux --target=arm-linux

    3. 编译

        make && make check

    4. 如果希望安装到指定目录,则在配置时指定 --prefix=/yourdir,编译之后执行make install即可。

 

=================================================================================================================

strace工具是一个非常强大的工具,是调试程序的好工具。要移植到arm平台,就需要使用交叉编译工具编译生成静态链接的可执行文件。具体步骤如下:

1.下载 strace-4.5.16.tar.bz2,不要下载最新的strace-4.5.18.tar.bz2,因为后者编译会出错。下载网址是:http://sourceforge.net/project/showfiles.php?group_id=2861&package_id=2819;

2.解压。对于ARM平台,必须打上一个补丁,补丁在文章的最后面;

3.配置。./configure --host=arm-linux CC=arm_v5t_le-gcc LD=arm_v5t_le-ld;

4.编译。make CFLAGS+="-static",生成strace静态可执行文件,2M多;

5.strip。arm_v5t_le-stip strace,这样可执行文件就减小到600多K。

以上采用的是达芬奇平台的arm工具,也可以直接使用通用的arm-linux-gcc工具,版本3.4.1的我试过,可以编译通过,其他版本的不清楚。



strace的使用介绍可以参考以下两篇文章:
1.http://www.ibm.com/developerworks/cn/aix/library/au-unix-strace.html。
2.http://blog.chinaunix.net/u1/38279/showart_367248.html


 

--- strace-4.5.16-orig/syscall.c 2005-06-08 21:45:28.000000000 +0100
+++ strace-4.5.16/syscall.c 2005-10-25 19:26:39.000000000 +0100
@@ -1045,6 +1045,15 @@ struct tcb *tcp;
/*
* Note: we only deal with only 32-bit CPUs here.
*/
+
+ if (!(tcp->flags & TCB_INSYSCALL) &&
+ (tcp->flags & TCB_WAITEXECVE)) {
+ /* caught a fake syscall from the execve's exit */
+ tcp->flags &= ~TCB_WAITEXECVE;
+ return 0;
+ }
+
+
if (regs.ARM_cpsr & 0x20) {
/*
* Get the Thumb-mode system call number

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
strace命令是一个用于跟踪进程中系统调用和信号的工具,通过它可以了解进程在运行过程中对系统调用的使用情况,适用于程序调试和性能优化等场景。在进行交叉编译时,需要将源代码、库文件和编译器等都进行相关配置,从而能够正确生成不同架构的二进制文件。 在进行x86_arm静态连接交叉编译strace命令的时候,需要做以下几个步骤: 1.配置交叉编译环境:需要在本地安装交叉编译工具链,并进行相关环境变量的设置,以便后续编译。 2.下载strace源代码:从官网上下载strace的源代码,解压后进入其目录。 3.配置Makefile文件:在strace源代码目录下执行"./configure"命令,进行Makefile文件的配置,这里需要指定交叉编译工具链的路径和所需的选项,如静态库链接等。配置完成后,将生成Makefile文件。 4.编译strace命令:执行"make"命令,进行编译生成二进制文件。如果一切顺利的话,编译完成后将在"src"目录下生成strace命令的可执行文件。 5.将二进制文件打包:使用交叉编译工具链中的工具"strip"命令可以优化生成的二进制文件,将其大小进一步减小。然后将该二进制文件及其依赖库文件等打包成一个完整的可执行文件。可以使用工具"sstrip"等进一步压缩二进制文件。 以上是x86_arm静态连接交叉编译strace命令的一般步骤,需要根据不同系统环境和编译器的不同进行相应的调整,并进行严格的测试以确保其正确性和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值