centos7交叉编译aarch64

一:原始链接网址

How to Build a GCC Cross-Compiler (preshing.com)
libwiringPi.so:undefined reference to ‘fcntl@GLIBC_2.28‘_wiringpi undefined reference to-CSDN博客

二:查看目标服务器版本信息

gcc --version
ld -v
ldd --version
uname -a
源码包版本查看命令版本
Binutilsld -v
gccgcc --version
kerneluname -a
glibcldd --version
mpfrfind /. -name libmpfr.*
gmpfind /. -name libgmp.*
mpcfind /. -name libmpc.*
islgcc --version–without-isl
clooggcc --version–without-cloog

without-isl 和 without-cloog 不用下载 isl、cloog

三:下载源码包

以下下载版本,可以复制路径选择目标服务器对应的版本下载

$ wget http://ftpmirror.gnu.org/binutils/binutils-2.24.tar.gz
$ wget http://ftpmirror.gnu.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.17.2.tar.xz
$ wget http://ftpmirror.gnu.org/glibc/glibc-2.20.tar.xz
$ wget http://ftpmirror.gnu.org/mpfr/mpfr-3.1.2.tar.xz
$ wget http://ftpmirror.gnu.org/gmp/gmp-6.0.0a.tar.xz
$ wget http://ftpmirror.gnu.org/mpc/mpc-1.0.2.tar.gz
$ wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.12.2.tar.bz2
$ wget https://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.18.1.tar.gz

四:安装

1) 解压源码

$ for f in *.tar*; do tar xf $f; done

2) 创建符号链接

$ cd gcc-4.9.2
$ ln -s ../mpfr-3.1.2 mpfr
$ ln -s ../gmp-6.0.0 gmp
$ ln -s ../mpc-1.0.2 mpc
$ ln -s ../isl-0.12.2 isl
$ ln -s ../cloog-0.18.1 cloog
$ cd ..

3) 创建文件夹,添加路径

mkdir -p /opt/cross
vim /etc/profile
添加:export PATH=/opt/cross/bin:$PATH

4) 源码生成Binutils

$ mkdir build-binutils
$ cd build-binutils
$ ../binutils-2.24/configure --prefix=/opt/cross --target=aarch64-linux --disable-multilib
$ make -j4
$ make install
$ cd ..

注释:可能问题

(1)makeinfo: command not found

yum install texinfo

5) 安装内核

$ cd linux-3.17.2
$ make ARCH=arm64 INSTALL_HDR_PATH=/opt/cross/aarch64-linux headers_install
$ cd ..

6) 安装GCC

$ mkdir -p build-gcc
$ cd build-gcc
$ ../gcc-4.9.2/configure --prefix=/opt/cross --target=aarch64-linux --enable-languages=c,c++ --disable-multilib
$ make -j4 all-gcc
$ make install-gcc
$ cd ..

7) 安装GLIBC

$ mkdir -p build-glibc
$ cd build-glibc
$ ../glibc-2.20/configure --prefix=/opt/cross/aarch64-linux --build=$MACHTYPE --host=aarch64-linux --target=aarch64-linux --with-headers=/opt/cross/aarch64-linux/include --disable-multilib libc_cv_forced_unwind=yes
$ make install-bootstrap-headers=yes install-headers
$ make -j4 csu/subdir_lib
$ install csu/crt1.o csu/crti.o csu/crtn.o /opt/cross/aarch64-linux/lib
$ aarch64-linux-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/cross/aarch64-linux/lib/libc.so
$ touch /opt/cross/aarch64-linux/include/gnu/stubs.h
$ cd ..

8) 重新安装GCC

因为gcc 和 glibc互相依赖

cd build-gcc
make -j4 all-target-libgcc
make install-target-libgcc
cd ..

9) 重新安装glibc

因为gcc 和 glibc互相依赖

cd build-glibc
make -j4
make install
cd ..

10) 重新安装GCC

cd build-gcc
make -j4
make install
cd ..

五:使用,CMakeFile.txt中添加交叉编译开关

option(ARM-BUTTON "arm" ON)
if (ARM-BUTTON) 
    # #交叉编译设置
    set(CMAKE_SYSTEM_NAME Linux)    #设置目标系统名字
    set(CMAKE_SYSTEM_PROCESSOR aarch64) #设置目标处理器架构
    # # 指定编译器的 sysroot 路径
    set(TOOLCHAIN_DIR /opt/cross)
    # # 指定交叉编译器 arm-gcc 和 arm-g++
    set(CMAKE_C_COMPILER   ${TOOLCHAIN_DIR}/bin/aarch64-linux-gcc)
endif(ARM-BUTTON)

注释:可能问题

(1)…/…/…/…/gcc-4.9.2/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:157:10: 致命错误:sys/ustat.h:没有那个文件或目录

修改 libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 文件:

Linux下gcc编译报错:fatal error: sys/ustat.h: No such file or directory 解决办法-CSDN博客

(2)错误:‘PATH_MAX’ undeclared

#include <limits.h> 改成 #include <linux/limits.h>

欲速则不达!!!!!!!!

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CentOS 7.9版本(CentOS-7-aarch64-Everything-2009)适用于ARM64 (aarch64),必须集齐9个文件才能一起解压缩使用,9个文件下载地址: CentOS-7-aarch64-Everything-2009.part09.rar https://download.csdn.net/download/weixin_43800734/20419195 CentOS-7-aarch64-Everything-2009.part08.rar https://download.csdn.net/download/weixin_43800734/20419107 CentOS-7-aarch64-Everything-2009.part07.rar https://download.csdn.net/download/weixin_43800734/20419029 CentOS-7-aarch64-Everything-2009.part06.rar https://download.csdn.net/download/weixin_43800734/20418995 CentOS-7-aarch64-Everything-2009.part05.rar https://download.csdn.net/download/weixin_43800734/20418492 CentOS-7-aarch64-Everything-2009.part04.rar https://download.csdn.net/download/weixin_43800734/20418455 CentOS-7-aarch64-Everything-2009.part03.rar https://download.csdn.net/download/weixin_43800734/20418366 CentOS-7-aarch64-Everything-2009.part02.rar https://download.csdn.net/download/weixin_43800734/20418341 CentOS-7-aarch64-Everything-2009.part01.rar https://download.csdn.net/download/weixin_43800734/20418267 CentOS是免费的、开源的、可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一。 CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于Red Hat Enterprise Linux(RHEL)依照开放源代码(大部分是GPL开源协议 )规定释出的源码所编译而成。自2004年3月以来,CentOS Linux一直是社区驱动的开源项目,旨在与RHEL在功能上兼容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值