• 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

    安装:

    1. sudo apt install cmake
    2. sudo apt install gawk
    3. sudo apt install bison

    第一步:安装glibc-2.34

    1. mkdir build
    2. cd build
    3. ../configure --prefix=${PWD}/install \
    4. --build=arm-linux-gnu \
    5. --host=arm-linux-gnu \
    6. --target=arm-linux-gnu \
    7. CC=arm-linux-gnueabihf-gcc \
    8. CXX=arm-linux-gnueabihf-g++ \
    9. CPP=arm-linux-gnueabihf-cpp \
    10. --disable-multilib libc_cv_forced_unwind=yes
    11. make
    12. make install

    第二步:编译gmp-6.1.0

    1. ./configure --prefix=${PWD}/install/ --host=arm-linux --disable-assembly CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++
    2. make
    3. make install

    第三步:编译mpfr-3.1.4

    1. ./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
    2. make
    3. make install

    第四步:编译mpc-1.03

    1. ./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
    2. make
    3. 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/,

    然后执行

    1. ./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
    2. make
    3. make install

    第六步:编译gcc-9.5

    删除cc

    1. cd /usr/bin
    2. sudo rm cc
    3. sudo ln -s /opt/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc cc
    4. reboot

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

    sudo apt-get install lsb-core lib32stdc++6

    然后执行

    1. ./configure --prefix=${PWD}/build \
    2. --with-gmp=/opt/gmp-6.1.0/install \
    3. --with-mpfr=/opt/mpfr-3.1.4/install \
    4. --with-mpc=/opt/mpc-1.0.3/install \
    5. --with-isl=/opt/isl-0.18/install \
    6. CC=arm-linux-gnueabihf-gcc \
    7. CXX=arm-linux-gnueabihf-g++ \
    8. CPP=arm-linux-gnueabihf-cpp \
    9. --host=arm-linux-gnueabihf \
    10. --target=arm-linux-gnueabihf \
    11. --with-newlib \
    12. --without-headers \
    13. --enable-initfini-array \
    14. --disable-nls \
    15. --disable-shared \
    16. --disable-multilib \
    17. --disable-decimal-float \
    18. --disable-threads \
    19. --disable-libatomic \
    20. --disable-libgomp \
    21. --disable-libquadmath \
    22. --disable-libssp \
    23. --disable-libvtv \
    24. --disable-libstdcxx \
    25. --enable-checking=release \
    26. --enable-languages=c,c++
    27. make -j8 all-gcc
    28. 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下载

  • 相关阅读:
    〖Python 数据库开发实战 - MySQL篇㉞〗- 综合案例 - 新闻管理系统数据库设计的基本属性
    C语言输入输出格式总结
    【已解决】socket.gaierror: [Errno -3] Temporary failure in name resolution
    Docker实战-使用NGINX实现4层的负载均衡
    金仓数据库 KingbaseES SQL 语言参考手册 (21. KES正则表达式支持)
    LabVIEW应用开发——前面板和程序框图
    python web 开发与 Node.js + Express 创建web服务器入门
    git常见使用 --实习中用到的
    如何挑选猫主食罐头?宠物店自用的5款猫主食罐头推荐!
    欧洲FBA专线海运与陆运的差别
  • 原文地址:https://blog.csdn.net/sz76211822/article/details/133500026