工程开发中需要用到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相关推荐

  1. 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 ...

  2. linux arm 无法执行二进制文件,qemu-arm无法运行arm编译的二进制文件

    我使用qemu,qemu-user和安装的gnueabi工具链运行Linux Mint 14.我用arm-linux-gnueabi-gcc test.c -o test编译了test.c.qemu- ...

  3. dlib linux 编译使用,ubuntu/ARM编译使用Dlib、OpenCV

    参考文章: ubuntu安装Dlib(C++与Python) https://blog.csdn.net/sinat_38354963/article/details/90517321 ubuntu编 ...

  4. Linux x86 和ARM什么区别?

    问题: 最近在用三星的一款i5处理器的Windows平板,和iPad,以及其他使用ARM处理器的手机相比,发热量大很多,甚至需要借助风扇来散热,耗电量也大了不少. 那么就很奇怪,在主频相差不大,并且实 ...

  5. 在Linux PC上查看arm交叉编译的可执行文件依赖的动态库

    在Ubuntu宿主机上查看ARM交叉编译好的可执行程序和库文件的相关依赖关系,类似于PC linux上的ldd命令.     在电脑上安装的Linux系统中,有一个ldd命令,可以查看对应的可执行文件 ...

  6. Linux 内核获取、初次编译、源码目录分析

    目录 Linux 内核获取 Linux 内核初次编译 Linux 内核源码目录分析 1.arch 目录 2.block 目录 3.crypto 目录 4.Documentation 目录 5.driv ...

  7. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题

    linux系统升级后,手动编译的kernel无法启动问题 linux系统升级后,手动编译的kernel无法启动问题 做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级 ...

  8. Linux内核的配置和编译

    文章目录 前言 1.内核介绍 2.linux内核源码目录结构 3.内核配置和编译实验 4.内核的配置原理 5.menuconfig 6.Kconfig文件详解 7.menuconfig的实验 前言 以 ...

  9. 64位Slitaz Linux下Glibc 2.20编译式更新安装成功

    目录 一.编译需求 二.编译前的环境 三.编译的程序包 四.开始编译 五.总结 一.编译需求 我使用的是64位Slitaz的linux系统(中文),glibc的版本只有2.14.1,运行teamvie ...

  10. Linux内核的配置和编译原理

    目录 一.linux内核源码目录结构 二.内核配置和编译体验 三.内核的配置原理 四.menuconfig的使用和演示 五.menuconfig的工作原理 六.Kconfig文件详解 七.menuco ...

最新文章

  1. 【硬核干货 | 程序的编译、链接、装载与运行】
  2. DVWA-SQL注入
  3. linux上传下载文件命令rz、sz
  4. pandas尾部添加一条_Numpy与Pandas
  5. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化
  6. swagger的使用(com.spring4all)
  7. PostgreSQL的notify 与listen (三)
  8. mysql php教程笔记_Mysql学习笔记(一)
  9. SQL Server 2008 评估已过期解决方案
  10. 大学女生全面超男生,一个标志性事件
  11. Guava之Joiner笔记
  12. K8s 亲和性和非亲和性(Affinity)
  13. r语言library什么意思_汽车自动挡上的P、R、N、D、S、L和M,都表示什么意思?
  14. 1072. 开学寄语
  15. 服务器ping值不稳定,服务器网络ping值过高的原因
  16. MIPI DSI之DBI DPI含义和区别(3-1)
  17. 去看刘晓庆演的话剧《武则天》
  18. 直角三角形第斜边计算
  19. 领域驱动设计(DDD)之领域专家
  20. springboot学习:bean生命周期

热门文章

  1. 华为 ap ac设备配置命令
  2. 华中科技大学计算机组成原理-计算机数据表示实验(全部通关)
  3. http://ac.jobdu.com/problem.php?pid=1020
  4. python arp扫描_Python3利用scapy局域网实现自动多线程arp扫描功能
  5. Java暂停/挂起线程(suspend())和恢复线程(resume())
  6. Vijos——同学排序
  7. 智慧农业“黑科技”,FCU1101智能灌溉控制器方案
  8. Android iOS设计尺寸规范
  9. 从FrozenUI中学习CSS的实际解决方案
  10. apk反编译工具的使用,超实用