首页 > 系统相关 >aarch64-linux-gnu- 交叉编译util-linux

aarch64-linux-gnu- 交叉编译util-linux

时间:2023-11-16 16:57:02浏览次数:47  
标签:gnu aarch64 util -- build linux

util-linux源码下载:  git clone [email protected]:util-linux/util-linux.git 或者 https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/

执行 git tag 查看有哪些发行版本,这里切换到v2.39.2版本:

git checkout v2.39.2

交叉编译工具链:gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu

交叉编译步骤

1. 导出交叉编译工具链环境变量

export PATH=/usr/local/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin:$PATH

这里根据你的交叉编译工具链的位置进行相应的调整,我这里是把工具链放在了/usr/local目录下了。

2. 执行autogen.sh生成configure

./autogen.sh

3. 新建build目录用来安装编译后的库和可执行程序

mkdir build

4. 执行configure生成Makefile文件

./configure --host=aarch64-linux-gnu --prefix=/root/util-linux/build
  •  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
  • --prefix=PREFIX   install architecture-independent files in PREFIX [/usr]

5. 编译

make

编译的时候报如下错误:

/usr/local/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/7.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find -ltinfo
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:7857: dmesg] Error 1
make[2]: Leaving directory '/root/util-linux'
make[1]: *** [Makefile:15786: all-recursive] Error 1
make[1]: Leaving directory '/root/util-linux'
make: *** [Makefile:6695: all] Error 2

解决办法:

在执行 configure 的时候加上 --without-tinfo 选项。

./configure --host=aarch64-linux-gnu --prefix=/root/util-linux/build --without-tinfo
make

 configure 执行完成,继续编译的时候又出现新的错误,如下:

In file included from /usr/include/python2.7/Python.h:8:0,
                 from libmount/python/pylibmount.h:4,
                 from libmount/python/context.c:21:
/usr/include/python2.7/pyconfig.h:12:12: fatal error: aarch64-linux-gnu/python2.7/pyconfig.h: No such file or directory
 #  include <aarch64-linux-gnu/python2.7/pyconfig.h>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

解决办法:

在执行 configure 的时候加上  --disable-pylibmount 选项。

./configure --host=aarch64-linux-gnu --prefix=/root/util-linux/build --without-tinfo
make

静静等待编译完成。编译完成后执行 make install 进行安装,安装完成后在build目录下有如下内容:

# ls build/*
build/bin:
cal    col     dmesg      fincore  hardlink  ipcrm    last     logger  lsfd     lslogins  mesg        nsenter  renice      scriptreplay  uclampset  utmpdump   wdctl
chmem  colcrt  eject      findmnt  hexdump   ipcs     lastb    look    lsipc    lsmem     mount       pipesz   rev         setarch       umount     uuidgen    whereis
choom  colrm   fadvise    flock    ionice    isosize  linux32  lsblk   lsirq    lsns      mountpoint  prlimit  script      setsid        uname26    uuidparse
chrt   column  fallocate  getopt   ipcmk     kill     linux64  lscpu   lslocks  mcookie   namei       rename   scriptlive  taskset       unshare    wall

build/include:
blkid  libfdisk  libmount  libsmartcols  uuid

build/lib:
libblkid.a   libblkid.so.1      libfdisk.la    libfdisk.so.1.1.0  libmount.so        libsmartcols.a   libsmartcols.so.1      libuuid.la    libuuid.so.1.3.0
libblkid.la  libblkid.so.1.1.0  libfdisk.so    libmount.a         libmount.so.1      libsmartcols.la  libsmartcols.so.1.1.0  libuuid.so    pkgconfig
libblkid.so  libfdisk.a         libfdisk.so.1  libmount.la        libmount.so.1.1.0  libsmartcols.so  libuuid.a              libuuid.so.1

build/sbin:
addpart     blkid     chcpu       fdisk   fsck.minix  hwclock   mkfs        mkswap   pivot_root   resizepart  sfdisk     swapoff      uuidd
agetty      blkzone   ctrlaltdel  findfs  fsfreeze    ldattach  mkfs.bfs    nologin  raw          rfkill      sulogin    swapon       wipefs
blkdiscard  blockdev  delpart     fsck    fstrim      losetup   mkfs.minix  partx    readprofile  rtcwake     swaplabel  switch_root  zramctl

build/share:
doc  locale

 

标签:gnu,aarch64,util,--,build,linux
From: https://www.cnblogs.com/wanglouxiaozi/p/17836701.html

相关文章

  • prometheus + node-exporter + Grafana 监控Linux资源情况
    背景1.Oracle集群需要监控2.下载2.1node_exporter-1.6.1.linux-amd64.tar.gz2.2 prometheus-2.46.0.linux-amd64.tar.gz 3.采集数据下载监控Linux的exporter(注意选择自己的操作系统,我的操作系统是Linuxcentos7.9),下载链接:https://github.com/prometheus/node_exporte......
  • Linux 离线安装docker
    一、Linux离线安装docker1.下载Linux版本离线安装包下载地址https://download.docker.com/linux/static/stable/x86_64/下载的最新版本docker-24.0.7.tgz2.安装docker上传安装包创建文件夹dockersoftware#mkdirdockersoftware上传docker-24.0.7.tgz到/docke......
  • Linux磁盘配额
    设置磁盘配额需要提前注意几点:1.磁盘配额限制只能针对文件系统做配额限制,即/dev/sd{a,b,c}1等,且内核和文件系统必须支持,且文件系统类型必须是XFS,否则无法设置配额。2.配额只能限制普通用户,无法限制管理员用户。3.需要提前yum-yinstallquota,安装quota这个命令包。4.可以限制......
  • Linux挂载硬盘(2T以上)-parted
     查看PDF操作场景本文以裸金属服务器的操作系统为“CentOS7.464位”、云硬盘容量为3TB举例,采用Parted分区工具为容量大于2TB的数据盘设置分区。MBR格式分区支持的磁盘最大容量为2TB,GPT分区表最大支持的磁盘容量为18EB,因此当为容量大于2TB的磁盘分区时,请采用GPT分......
  • JDK系列---【linux系统脚本快速安装JDK】
    1.install.shtar-zxvfjdk8.tar.gzmvjdk8u201jdk8#查看是否系统自带openjdkrpm-qa|grepjava#卸载自带openjdkrpm-etadata-java-2022a-1.el8.noarchjavapackages-filesystem-5.3.0-1.module+el8+2447+6f56d9a6.noarchjava-1.8.0-openjdk-headless-1.8.0.322.b06-11.......
  • Linux文件权限02
    ACL高级特性最大有效权限mask:使用getfacl,其中mask项就是ACL的最大有效权限注:mask用来指定最大有效权限。系统给用户赋予ACL权限需要和mask的权限逻辑“相与”之后的权限才是用户的真正权限default:继承创建目录dir01,使用setfacl命令给用户增加rwx权限,然后在dir01目录下创建dir0......
  • linux配置固定的静态IP
    1、打开网络配置文件,如果你的网卡不是eth0,请相应替换为你的网卡名称。vim/etc/sysconfig/network-scripts/ifcfg-eth02、按照以下内容替换(根据你的网络设置而定)。DEVICE=eth0#网络设备名称TYPE=Ethernet#网络类型为以太网UUID=XXXXXXXXXX#设备的唯一标识符ONBOO......
  • 《Unix/Linux系统编程》第十二章学习笔记
    《Unix/Linux系统编程》第十二章学习笔记概念介绍块设备I/O缓冲区用来代替磁盘I/O的文件存取方法,基本原理是使用一系列的I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时,它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓冲区存在并且包含有效......
  • Windows下搭建Linux开发环境(vagrant)
     [下载]vagrant软件:https://www.virtualbox.org/wiki/Downloads centos镜像: http://isoredirect.centos.org/centos/7/isos/x86_64/ [安装]1.新建虚拟机新建:- 指定主机名称-类型:Linux-版本:RedHat(64-bit) 点击下一步,可以根据实际需要调整CPU和内存,后面的直接点击下一......
  • Linux(Centos7)升级MySQL 5.7到8.0.31
    一、下载MySQL安装包下载地址:https://downloads.mysql.com/archives/community/二、备份mkdir/home/mysqlbackmysqldump-uroot-p--all-databases>/home/mysqlback/mysqldback.sql三、卸载MySQL注:卸载之前一定要先备份好数据库1.检查当前系统是否安装过MySQLrpm-q......