Ubuntu22.04 交叉编译gcc9.5 for arm

一、准备

环境:ubuntu22.04为刚刚安装,未安装gcc等包

vi ~/.bashrc输入

复制代码
export PATH=$PATH:/opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin

保存,reboot

安装:

复制代码
sudo apt install cmake
sudo apt install gawk
sudo apt install bison

第一步:安装glibc-2.34

复制代码
mkdir build
cd build

../configure --prefix=${PWD}/install \
--build=arm-linux-gnu \
--host=arm-linux-gnu \
--target=arm-linux-gnu \
CC=arm-linux-gnueabihf-gcc \
CXX=arm-linux-gnueabihf-g++ \
CPP=arm-linux-gnueabihf-cpp \
--disable-multilib libc_cv_forced_unwind=yes

make
make install

第二步:编译gmp-6.1.0

复制代码
./configure --prefix=${PWD}/install/ --host=arm-linux --disable-assembly CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++

make 
make install

第三步:编译mpfr-3.1.4

复制代码
./configure --prefix=${PWD}/install --host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-gmp=/opt/gmp-6.1.0/install

make
make install

第四步:编译mpc-1.03

复制代码
./configure --prefix=${PWD}/install --host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-gmp=/opt/gmp-6.1.0/install --with-mpfr=/opt/mpfr-3.1.4/install

make
make install

第五步:编译isl-0.18

将/opt/gmp-6.1.0/install/lib目录下所有库文件拷贝到gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib/,

然后执行

复制代码
./configure --prefix=${PWD}/install --host=arm-linux CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --with-gmp-prefix=/opt/gmp-6.1.0/install

make
make install

第六步:编译gcc-9.5

删除cc

复制代码
cd /usr/bin
sudo rm cc
sudo ln -s /opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc cc
reboot

然后安装一些库,要不然编译不过

复制代码
sudo apt-get install lsb-core lib32stdc++6

然后执行

复制代码
./configure --prefix=${PWD}/build \
--with-gmp=/opt/gmp-6.1.0/install \
--with-mpfr=/opt/mpfr-3.1.4/install \
--with-mpc=/opt/mpc-1.0.3/install \
--with-isl=/opt/isl-0.18/install \
CC=arm-linux-gnueabihf-gcc \
CXX=arm-linux-gnueabihf-g++ \
CPP=arm-linux-gnueabihf-cpp \
--host=arm-linux-gnueabihf \
--target=arm-linux-gnueabihf \
--with-newlib \
--without-headers \
--enable-initfini-array \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-decimal-float \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--disable-libstdcxx \
--enable-checking=release \
--enable-languages=c,c++

make -j8 all-gcc
make install-gcc

编译结果

编译gmp遇到问题:

问题:Oops, mp_limb_t is 64 bits, but the assembler code

解决:https://gist.github.com/cwoac/5844398

I realised the first failure was because it tried to build the 64 bit code on a 32 bit platform.

The attached gist is the failure when running with --32-bit.

This can be worked around by adding --disable-assembly to the configure call

同时:

sudo apt-get install m4

备注:

gcc-9.5源码根目录/contrib/download_prerequisites 里面地有需要依赖的库源码版本,可以直接执行./contrib/download_prerequisites下载

相关推荐
春涧草茶9 分钟前
慢就是快12-12手动抛出异常
java·linux·前端
KING-WU5121 小时前
Linux 工具之Make 与 Makefile
java·linux·服务器
Lsetea2 小时前
OpenSSL报certificate is not yet valid:error 9与notBefore时间排查
linux·运维·https·ssl证书·openssl
魔法阵维护师2 小时前
Linux 命令行入门踩坑记录:从 VMware 装系统到文件管理
linux·运维·服务器
Apipi*2 小时前
30天速通Linux 第七章进程间通信
linux·运维·服务器
emo_2b2 小时前
Pycharm配置conda解释器时遇到的问题及解决方法
linux·pycharm·conda
人生百态,人生如梦3 小时前
Ubuntu在低版本下使用ccswitch+claudecode(CCSwitch+Docker+Claude)连调教程
linux·ubuntu·docker·claudecode·ccswitch
byte轻骑兵3 小时前
【BlueZ】hciconfig 工具:蓝牙适配器管理实操 + 源码实现基础
linux·bluez·电脑蓝牙·嵌入式蓝牙
SKH.3 小时前
Linux驱动-系统移植
linux·服务器
根目录下的猫3 小时前
虚拟机复制过来运行时:“虚拟机使用的此版本,VMware Workstation 不支持的硬件版本。”错误解决办法,亲测可用
linux·运维·服务器·后端