aarch64平台交叉编译strace工具

aarch64平台交叉编译strace工具aarch64平台交叉编译strace工具

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

/*********************************************************************
* Author          :     lile
* Modified        :     2019年12月28日星期六  10:16:13
* Email           :     roger0212@163.com
* HomePage        :     lile777.blog.csdn.net
* CopyRight       :     该文章版权由lile所有。
*                       保留原文出处链接和本声明的前提下,可在非商业目的下任意传播和复制。
*                       对于商业目的下对本文的任何行为需经作者同意。
*********************************************************************/

1,主机环境

root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty
root@ubuntu:~# cat /proc/version
Linux version 4.4.0-31-generic (buildd@lgw01-43) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016
root@ubuntu:~# file /bin/busybox 
/bin/busybox: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=ae3cf83d83d4ed554fa7ba6d5f2b17c92c362710, stripped
root@ubuntu:~# 
root@ubuntu:~# aarch64-himix100-linux-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-himix100-linux-gcc
COLLECT_LTO_WRAPPER=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../libexec/gcc/aarch64-linux-gnu/6.3.0/lto-wrapper
Target: aarch64-linux-gnu
Configured with: /home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/src/gcc-6.3.0/configure --build=i386-redhat-linux --host=i386-redhat-linux --target=aarch64-linux-gnu --with-arch=armv8-a --prefix=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install --with-specs='%{!ftree-coalesce-vars:-fno-tree-coalesce-vars}' --disable-libmudflap --disable-libssp --enable-gold=yes --disable-libstdcxx-pch --disable-multilib --enable-multiarch --with-gnu-as --with-gnu-ld --enable-libgomp --enable-gnu-indirect-function --enable-checking=yes --enable-lto --enable-c99 --enable-long-long --disable-nls --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419 --enable-shared --with-pkgversion='HC&C V100R002C00B027_20181107' --enable-languages=c,c++ --with-headers=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target/usr/include --with-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target --with-build-sysroot=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/target --with-gmp=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-mpfr=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-mpc=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-cloog=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/obj/host-libs/usr --with-build-time-tools=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/aarch64-linux-gnu/bin --libdir=/home/sying/SDK_CPU_UNIFIED/build/script/aarch64-himix100-linux/aarch64_himix100_build_dir/install/lib
Thread model: posix
gcc version 6.3.0 (HC&C V100R002C00B027_20181107) 

2,文件下载

https://src.fedoraproject.org/repo/pkgs/strace/?C=M;O=D
https://strace.io

3,环境依赖与准备

3.1 安装autoreconf工具

apt-get install autoconf automake libtool	

3.2 生成编译引导文件

./bootstrap

4,x86编译测试

# 配置
time ./configure  --prefix=/opt/files/release/strace/x86_64  --enable-mpers=no 


# 编译
time make LDFLAGS+='-static -pthread'

# 安装
time make install

root@ubuntu:/opt/files/strace-5.4# tree /opt/files/release/strace/x86_64/
/opt/files/release/strace/x86_64/
├── bin
│   ├── strace
│   ├── strace-graph
│   └── strace-log-merge
└── share
    └── man
        └── man1
            ├── strace.1
            └── strace-log-merge.1

4 directories, 5 files

root@ubuntu:/opt/files/strace-5.4# file /opt/files/release/strace/x86_64/bin/strace*
/opt/files/release/strace/x86_64/bin/strace:           ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=2c8e6ab98c0963ae70eb9b7889beb0dae4d03939, not stripped
/opt/files/release/strace/x86_64/bin/strace-graph:     Perl script, ASCII text executable
/opt/files/release/strace/x86_64/bin/strace-log-merge: POSIX shell script, ASCII text executable


# 卸载清理
make uninstall && make distclean

5,aarch64平台交叉编译

# 配置
time CC=aarch64-himix100-linux-gcc LD=aarch64-himix100-linux-ld RANLIB=aarch64-himix100-linux-ranlib ./configure --host=aarch64-linux  --prefix=/opt/files/release/strace/aarch64/ --enable-mpers=no 

# 编译
time make LDFLAGS+='-static -pthread'

# 安装
time make install

root@ubuntu:/opt/files/strace-5.4# tree /opt/files/release/strace/aarch64/
/opt/files/release/strace/aarch64/
├── bin
│   ├── strace
│   ├── strace-graph
│   └── strace-log-merge
└── share
    └── man
        └── man1
            ├── strace.1
            └── strace-log-merge.1

4 directories, 5 files
root@ubuntu:/opt/files/strace-5.4# file /opt/files/release/strace/aarch64/bin/*
/opt/files/release/strace/aarch64/bin/strace:           ELF 64-bit LSB  executable, ARM aarch64, version 1 (SYSV), statically linked, for GNU/Linux 3.7.0, not stripped
/opt/files/release/strace/aarch64/bin/strace-graph:     Perl script, ASCII text executable
/opt/files/release/strace/aarch64/bin/strace-log-merge: POSIX shell script, ASCII text executable
root@ubuntu:/opt/files/strace-5.4# 


# 卸载清理
make uninstall && make distclean

6,Q&A

(1), ./bootstrap: line 40: autoreconf: command not found

apt-get install autoconf automake libtool	

(2),configure: error: Cannot enable m32 personality support

	Re: 4.21 build failure // https://sourceforge.net/p/strace/mailman/strace-devel/
	From: Eugene Syromiatnikov <esyr@re...> - 2018-02-19 19:13:31
	 On Thu, Feb 15, 2018 at 12:39:15AM +0100, Andreas Schwab wrote:
	> 4.21 fails to build for aarch64:
	> 
	> checking gnu/stubs-32.h usability... no
	> checking gnu/stubs-32.h presence... no
	> checking for gnu/stubs-32.h... no
	> configure: Created empty gnu/stubs-32.h
	> checking for m32 personality compile support... no
	> checking whether to enable m32 personality support... no
	> configure: error: Cannot enable m32 personality support

	As noted in NEWS, strace now enforces mpers support by default (in order
	to make aware of the possibilty of incorrect non-native personality
	decoding early); looks like your compiler doesn't support producing
	binaries for the compat personality.  You can either try to use another
	compiler or provide --disable-mpers to the configure script.

	As GCC for AArch64 doesn't support generating ARM EABI binaries at all,
	this issue will probably be somehow tackled in the future. 

7,参考

https://sourceforge.net/p/strace/mailman/strace-devel/
configure: error: Cannot enable m32 personality support

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181254.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 正交矩阵的模_正交矩阵的向量组

    正交矩阵的模_正交矩阵的向量组本节主要讲解正交(orthogonal)概念对于向量、基和子空间的意义。1.正交向量Orthogonalvectors2.正交子空间Orthogonalsubspaces3.零空间与行空间正交Nullspaceisperpendiculartorowspace4.矩阵A^TA

    2022年10月22日
    0
  • 怎么找出电脑隐藏的软件(如何清理电脑隐藏软件)

    你女朋友打开文件是一张图片,你打开却是各种“视频”,全程高能,搞起来!!!

    2022年4月17日
    39
  • 字符串匹配算法综述论文_多字符串匹配

    字符串匹配算法综述论文_多字符串匹配字符串匹配算法综述字符串匹配算法综述:BF、RK、KMP、BM、Sunday字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目。此算法通常输入为原字符串(string)和子串(pattern),要求返回子串在原字符串中首次出现的位置。比如原字符串为“ABCDEFG”,子串为“DEF”,则算法返回3。常见的算法包括:BF(BruteForce,暴力检索)、RK(R…

    2022年8月21日
    3
  • 如何彻底的卸载anaconda(包括配置文件)

    如何彻底的卸载anaconda(包括配置文件)如果你想测地卸载anaconda,请看SolutionB。[官方参考链接]。1.SolutionA通常卸载软件,直接运行uninstall就可以了,对于anaconda也一样,可以直接运行安装目录下的Uninstall-Anaconda3.exe即可,但是这样卸载并没有完全卸载。如果需要完全卸载请参考SolutionB2.SolutionB通过B方式卸载,请确保还没有通…

    2022年6月18日
    217
  • mysql数据库经典练习题

    mysql数据库经典练习题

    2021年10月3日
    48
  • 聊聊LuaJIT「建议收藏」

    聊聊LuaJIT「建议收藏」JIT什么是JITJIT=JustInTime即时编译,是动态编译的一种形式,是一种优化虚拟机运行的技术。程序运行通常有两种方式,一种是静态编译,一种是动态解释,即时编译混合了这二者。Ja

    2022年8月6日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号