Linux-X86和Linux-ARM编译binutils
工程开发中需要用到binutils里面相关工具,例如库和进程分析工具的nm、addr2line等,某些环境下可能没有这些工具,于是需要自己安装,这里记录一下安装过程,详细讲解了Linux-X86和Linux-ARM环境下的编译安装过程。
资源下载信息:可通过如下环境进行下载binutils的源码。
ftp://ftp.gnu.org
ftp://sourceware.org/pub/
https://github.com/bminor/binutils-gdb
https://gitee.com/langxm2006/binutils-gdb
安装过程:
1. Linux-X86环境,以ubuntu 18.04 LTS为例
(1).安装依赖,避免后续出现:'makeinfo' is missing on your system.和configure: error: GMP is missing or unusable等问题。
sudo apt install texinfo libgmp10 libgmp-dev libmpfr-dev -y
(2).配置信息,将下载的binutils源码压缩包放置到系统中,并解压,进入binutils的源码目录,执行配置命令,./configure --prefix=${your path},如:
./configure --prefix=/home/shelman/Share/binutils/install
(3)编译和安装
make && make install
编译安装成功后,可以配置的目录中看到如下信息:
2.Linux-ARM环境,以gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu交叉工具链为例
(1).将交叉工具链放到相关环境下:
tar -xvf gcc_linaro_6.5.0_2018.12_x86_64_aarch64_linux_gnu.tar.xz
sudo cp -r gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu /opt/
配置环境,写一个env_arm.sh
touch env_arm.sh
chmod +x env_arm.sh
并在env_arm.sh输入如下内容
#!/bin/bash
export LINARO_GCC_ROOT=/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu
export PATH=$PATH:/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/lib
后面需要在执行source env_arm.sh环境生效操作
(2).安装ARM下的gmp
资源:https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz
下载后解压,并配置安装
source env_arm.sh
./configure --prefix=/home/shelman/Share/install --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ --enable-cxx
make && make install
(3).makeinfo可以共用Linux-X86下安装的,指令为:
sudo apt install texinfo -y
(4).安装binutils,解压后进入目录,依次执行如下指令
source env_arm.sh
./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc --prefix=/home/shelman/Share/install --with-gmp=/home/shelman/Share/install
make && make install
--with-gmp的值为上文gmp安装的路径。
编译成功后在安装路径下有如下文件:
补充一点题外话:
Linux-ARM中查看系统时间
date
Linux-ARM中修改系统时间(中国区东八区,设置时间应该-8小时)
date -s "2022-09-13 9:30:30"
Linux-ARM中写入硬件时钟(RTC)
hwclock -w
Linux-ARM中查看硬件时间
hwclock
Linux-X86和Linux-ARM编译binutils相关推荐
- arm linux gcc 4.6.3,编译gcc-4.6.3
编译gcc-4.6.3 准备 下载GCC 源码包 : gcc-4.6.3.tar.bz2 下载GCC 依赖包: gmp-5.0.4.tar.bz2, mpfr-3.1.0.tar.bz2 ,mpc-0 ...
- linux arm 无法执行二进制文件,qemu-arm无法运行arm编译的二进制文件
我使用qemu,qemu-user和安装的gnueabi工具链运行Linux Mint 14.我用arm-linux-gnueabi-gcc test.c -o test编译了test.c.qemu- ...
- dlib linux 编译使用,ubuntu/ARM编译使用Dlib、OpenCV
参考文章: ubuntu安装Dlib(C++与Python) https://blog.csdn.net/sinat_38354963/article/details/90517321 ubuntu编 ...
- Linux x86 和ARM什么区别?
问题: 最近在用三星的一款i5处理器的Windows平板,和iPad,以及其他使用ARM处理器的手机相比,发热量大很多,甚至需要借助风扇来散热,耗电量也大了不少. 那么就很奇怪,在主频相差不大,并且实 ...
- 在Linux PC上查看arm交叉编译的可执行文件依赖的动态库
在Ubuntu宿主机上查看ARM交叉编译好的可执行程序和库文件的相关依赖关系,类似于PC linux上的ldd命令. 在电脑上安装的Linux系统中,有一个ldd命令,可以查看对应的可执行文件 ...
- Linux 内核获取、初次编译、源码目录分析
目录 Linux 内核获取 Linux 内核初次编译 Linux 内核源码目录分析 1.arch 目录 2.block 目录 3.crypto 目录 4.Documentation 目录 5.driv ...
- linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...
- Linux内核的配置和编译
文章目录 前言 1.内核介绍 2.linux内核源码目录结构 3.内核配置和编译实验 4.内核的配置原理 5.menuconfig 6.Kconfig文件详解 7.menuconfig的实验 前言 以 ...
- 64位Slitaz Linux下Glibc 2.20编译式更新安装成功
目录 一.编译需求 二.编译前的环境 三.编译的程序包 四.开始编译 五.总结 一.编译需求 我使用的是64位Slitaz的linux系统(中文),glibc的版本只有2.14.1,运行teamvie ...
- Linux内核的配置和编译原理
目录 一.linux内核源码目录结构 二.内核配置和编译体验 三.内核的配置原理 四.menuconfig的使用和演示 五.menuconfig的工作原理 六.Kconfig文件详解 七.menuco ...
最新文章
- 【硬核干货 | 程序的编译、链接、装载与运行】
- DVWA-SQL注入
- linux上传下载文件命令rz、sz
- pandas尾部添加一条_Numpy与Pandas
- [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
- swagger的使用(com.spring4all)
- PostgreSQL的notify 与listen (三)
- mysql php教程笔记_Mysql学习笔记(一)
- SQL Server 2008 评估已过期解决方案
- 大学女生全面超男生,一个标志性事件
- Guava之Joiner笔记
- K8s 亲和性和非亲和性(Affinity)
- r语言library什么意思_汽车自动挡上的P、R、N、D、S、L和M,都表示什么意思?
- 1072. 开学寄语
- 服务器ping值不稳定,服务器网络ping值过高的原因
- MIPI DSI之DBI DPI含义和区别(3-1)
- 去看刘晓庆演的话剧《武则天》
- 直角三角形第斜边计算
- 领域驱动设计(DDD)之领域专家
- springboot学习:bean生命周期
热门文章
- 华为 ap ac设备配置命令
- 华中科技大学计算机组成原理-计算机数据表示实验(全部通关)
- http://ac.jobdu.com/problem.php?pid=1020
- python arp扫描_Python3利用scapy局域网实现自动多线程arp扫描功能
- Java暂停/挂起线程(suspend())和恢复线程(resume())
- Vijos——同学排序
- 智慧农业“黑科技”,FCU1101智能灌溉控制器方案
- Android iOS设计尺寸规范
- 从FrozenUI中学习CSS的实际解决方案
- apk反编译工具的使用,超实用