日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

arm-linux-gnueabihf gcc8.3交叉编译工具搭建教程

發布時間:2023/12/10 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arm-linux-gnueabihf gcc8.3交叉编译工具搭建教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、運行環境

1.1 ?執行機環境

ld

GNU ld (GNU Binutils for Raspbian) 2.31.1

ldd

ldd (Debian GLIBC 2.28-10+rpi1) 2.28? ?Copyright (C) 2018 Free Software Foundation, Inc.

gcc

(Raspbian 8.3.0-6+rpi1) 8.3.0? ?Copyright (C) 2018 Free Software Foundation, Inc.

arm

ARMv7 ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0

1.2 ?交叉編譯機環境

Linux 桌面系統 Ubuntu 16.04.4 LTS

二、編譯步驟

2.1 ?用戶目錄下新建gcc_all文件夾,下載binutils-2.31.tar.bz2? gcc-8.3.0.tar.gz? glibc-2.28.tar.bz2? linux。

cd ~ mkdir gcc_all && cd gcc_all wget https://ftpmirror.gnu.org/binutils/binutils-2.31.tar.bz2 wget https://ftpmirror.gnu.org/glibc/glibc-2.28.tar.bz2 wget https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz git clone --depth=1 https://github.com/raspberrypi/linux

2.2? 提取所有壓縮文件

tar xf binutils-2.31.tar.bz2 tar xf glibc-2.28.tar.bz2 tar xf gcc-8.3.0.tar.gz rm *.tar.*

2.3?下載GCC8.3需要的一些資源文件到源碼中,刪除沒用的壓縮包

cd gcc-8.3.0 contrib/download_prerequisites rm *.tar.*

2.4?創建交叉編譯的安裝文件夾,并添加到PATH路徑中

cd ~/gcc_all sudo mkdir -p /opt/cross-pi-gcc sudo chown $USER /opt/cross-pi-gcc export PATH=/opt/cross-pi-gcc/bin:$PATH

2.5?安裝Linux內核頭文件到交叉編譯安裝文件夾

cd ~/gcc_all cd linux KERNEL=kernel7make ARCH=arm INSTALL_HDR_PATH=/opt/cross-pi-gcc/arm-linux-gnueabihf headers_install

2.6?編譯安裝Binutils 2.31

cd ~/gcc_all mkdir build-binutils && cd build-binutils../binutils-2.31/configure --prefix=/opt/cross-pi-gcc --target=arm-linux-gnueabihf --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-multilibmake -j8 make install

2.7?編譯安裝GCC

cd ~/gcc_all mkdir build-gcc && cd build-gcc../gcc-8.3.0/configure --prefix=/opt/cross-pi-gcc --target=arm-linux-gnueabihf --enable-languages=c,c++,fortran --with-arch=armv6 --with-fpu=vfp --with-float=hard --disable-multilibmake -j8 all-gcc make install-gcc

2.8?編譯安裝glibc2.28

cd ~/gcc_all mkdir build-glibc && cd build-glibc../glibc-2.28/configure --prefix=/opt/cross-pi-gcc/arm-linux-gnueabihf --build=$MACHTYPE --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf --with-arch=armv6 --with-fpu=vfp --with-float=hard --with-headers=/opt/cross-pi-gcc/arm-linux-gnueabihf/include --disable-multilib libc_cv_forced_unwind=yesmake install-bootstrap-headers=yes install-headersmake -j8 csu/subdir_libinstall csu/crt1.o csu/crti.o csu/crtn.o /opt/cross-pi-gcc/arm-linux-gnueabihf/libarm-linux-gnueabihf-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/cross-pi-gcc/arm-linux-gnueabihf/lib/libc.sotouch /opt/cross-pi-gcc/arm-linux-gnueabihf/include/gnu/stubs.h 錯誤處理:* LD_LIBRARY_PATH shouldn’t contain the current directory when * building glibc. Please change theenvironment variable * and run configure again. 解決:記錄LD_LIBRARY_PATH的值(echo $ LD_LIBRARY_PATH=),清空該變量(# LD_LIBRARY_PATH=),編譯安裝結束后重新添加。

2.9?回到GCC編譯安裝libgcc

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

2.10?結束安裝Glibc

cd .. cd build-glibc make -j8 make install

2.11?最后完成安裝GCC8.3.0

cd .. cd build-gcc make -j8 make install cd ..

安裝完成后系統中存在arm-linux-gnueabihf-gcc-8.3.0。可在控制命令中查到:

?

三、測試

新建一個test.c文件如下:

#include “stdio.h” int main() {printf(“test arm-linux-gnueabihf cross-compile-tools\r\n”);return 0; }

執行編譯:

arm-linux-gnueabihf-gcc test.c -o out

查看編譯信息:

file out out: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped

編譯完成。

四、參考

Building GCC as a cross compiler for Raspberry Pi:https://solarianprogrammer.com/2018/05/06/building-gcc-cross-compiler-raspberry-pi/

總結

以上是生活随笔為你收集整理的arm-linux-gnueabihf gcc8.3交叉编译工具搭建教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。