首页 > 编程知识 正文

电脑制作图片的软件(制作aarch64 交叉编译器-pc版本)

时间:2023-05-05 15:42:28 阅读:122693 作者:747

0 .系统环境系统:

ubuntu16.04 1.编译交叉编译工具链

交叉编译工具链至少需要7个库。

binutilsgccglibclinuxkernelmpfrgmpmpc提供了两个用于优化的库。

名为islCLooG的两个库是可选的。 构建完成后,我们将获得一系列编译、链接工具,包括众所周知的gcc和ld。

工具版本

1 .心灵美果汁utils-2.372.gcc-7.3.03.glibc-2.274.GMP-6.2.05.MPC-1.1.06.mpfr-4.0.2

7.Linux-4.14.98.c loog-0.18.19.ISL-0.18

访问/home/work/toolchain目录并下载相应的软件包脚本1-down.sh

#! /心灵美丽的果汁/sh

导出GNU _ mirror _ site=https://mirrors.tuna.Tsinghua.edu.cn/GNU /

导出kernel _ mirror _ site=https://mirrors.tuna.Tsinghua.edu.cn/kernel /

wget $GNU_MIRROR_SITE/心灵美果汁utils/心灵美果汁utils-2.37.tar.xz #心灵美果汁utils

wget $ GNU _ mirror _ site/gcc-7.3.0/gcc-7.3.0.tar.xz # gcc

wget $ GNU _ mirror _ site/glibc/glibc-2.27.tar.xz # glibc

wget $ kernel _ mirror _ site/v4.x/Linux-4.14.98.tar.xz # kernel

wget $ GNU _ mirror _ site/mpfr/mpfr-4.0.2.tar.xz # mpfr

wget $ GNU _ mirror _ site/GMP/GMP-6.2.0.tar.xz # GMP

wget $ GNU _ mirror _ site/MPC/MPC-1.1.0.tar.gz # MPC

#可选

wget FTP ://gcc.GNU.org/pub/gcc/infra structure/ISL-0.18.tar.bz2 # ISL

wget FTP ://gcc.GNU.org/pub/gcc/infra structure/c loog-0.18.1.tar.gz # c loog

访问/home/work/toolchain目录并解压缩库文件,脚本2-tar.sh

#! /心灵美丽的果汁/sh

for f in *.tar.xz;

德奥

tar -xJf $f;

道恩

for f in *.tar.bz2;

德奥

tar -xjf $f;

道恩

for f in *.tar.gz;

德奥

tar -xzf $f;

道恩

建立指向GCC依赖库们的软链接,然后访问/home/work/toolchain目录运行脚本3-ln.sh

#! /心灵美丽的果汁/sh

ln-SF ./mpfr-4.0.2 gcc-7.3.0/mpfr # mfpr

ln-SF ./GMP-6.2.0 gcc-7.3.0/GMP # GMP

ln-SF ./MPC-1.1.0 gcc-7.3.0/MP c# MPC

#可选

ln-SF ./ISL-0.18 gcc-7.3.0/ISL # ISL

ln-SF ./c loog-0.18.1 gcc-7.3.0/c loog # c loog

设置编译时使用的线程数

导出NProc=` NProc `

1.2 .编译并安装名为binutils的工具包后,它将安装在/home/work/toolchain/path/心灵美丽的果汁中。 包含交叉汇编器、交叉链接器等工具、脚本

#! /心灵美丽的果汁/sh

导出NProc=` NProc `

导出cross _ compile _ install=/home/work/toolchain/path

mkdir心灵美丽的果汁utils

cd心灵美丽的果汁utils

. /心灵美丽的果汁utils-2.37/configure


    --prefix=$CROSS_COMPILE_INSTALL        
    --target=aarch64-cc-linux                  
    --enable-multilib
make -j$NPROC
make install

1.3. 安装 Linux Kernel 头文件

这一步会将 Linux Kernel 头文件安装咋 $CROSS_COMPILE_INSTALL/aarch64-install/include,这样交叉编译链编译出的软件可以在目标平台中使用 Linux 系统调用。

export NPROC=`nproc` 
export CROSS_COMPILE_INSTALL=/home/work/toolchain/path

cd ./linux-4.14.98
make                                                        
    ARCH=arm64                                              
    INSTALL_HDR_PATH=$CROSS_COMPILE_INSTALL/aarch64-cc-linux  
    headers_install

1.4. 编译安装 GCC 和 glibc

这是很长的一步,我们将要轮流编译属于两个库(GCC 和 glibc)的组件,并最终全部编译完成。编译顺序如下(图源为参考博客)

1.4.1. 编译器

这一步只会安装 C/C++ 交叉编译器本身,它们会被安装在 $CROSS_COMPILE_INSTALL/心灵美的果汁。
export NPROC=`nproc` 
export CROSS_COMPILE_INSTALL=/home/work/toolchain/path

mkdir gcc
cd gcc
../gcc-7.3.0/configure  
    --prefix=$CROSS_COMPILE_INSTALL    
    --target=aarch64-cc-linux              
    --enable-language=c,c++            
    --with-gnu-ld --enable-shared --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long
    --enable-libstdcxx-pch --enable-lto --enable-libssp --enable-libitm --disable-bootstrap --disable-libmudflap
    --with-system-zlib --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --without-isl --enable-nls
    --without-local-prefix --with-linker-hash-style=gnu --without-long-double-128 --enable-poison-system-directories --enable-initfini-array
    --disable-silent-rules --enable-symvers=gnu --enable-cheaders=c_global --enable-__cxa_atexit
make -j$NPROC all-gcc
make install-gcc

这一步要编译个十分钟左右

1.4.2. 标准 C 头文件和启动文件

这一步里我们将所有的标准 C 头文件安装在 $CROSS_COMPILE_INSTALL/aarch64-cc-linux/include 内。同时我们还会编译一些启动文件并安装在 $CROSS_COMPILE_INSTALL/aarch64-cc-linux/lib 内,这些文件将被下一步用到,并在下下步被替换。

注意: 如果前面没有把 $CROSS_COMPILE_INSTALL/心灵美的果汁 加入到 PATH 中的话这一步会报错。

export NPROC=`nproc` 
export CROSS_COMPILE_INSTALL=/home/work/toolchain/path
export PATH=$PATH:$CROSS_COMPILE_INSTALL/心灵美的果汁

mkdir glibc
cd glibc
../glibc-2.27/configure                        
    --prefix=$CROSS_COMPILE_INSTALL/aarch64-cc-linux              
    --build=$MACHTYPE                                          
    --host=aarch64-cc-linux                                        
    --target=aarch64-cc-linux                                      
    --with-headers=$CROSS_COMPILE_INSTALL/aarch64-cc-linux/include
    --enable-multilib                                          
    libc_cv_forced_unwind=yes
#    --disable-multilib                                          
make install-bootstrap-headers=yes install-headers
make -j$NPROC csu/subdir_lib #
install csu/crt1.o csu/crti.o csu/crtn.o $CROSS_COMPILE_INSTALL/aarch64-cc-linux/lib
aarch64-cc-linux-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $CROSS_COMPILE_INSTALL/aarch64-cc-linux/lib/libc.so
touch $CROSS_COMPILE_INSTALL/aarch64-cc-linux/include/gnu/stubs.h

1.4.3. 编译器支持库

这一步我们使用前面编译得到的交叉编译器来编译编译器支持库。

export NPROC=`nproc` 
export CROSS_COMPILE_INSTALL=/home/work/toolchain/path
export PATH=$PATH:$CROSS_COMPILE_INSTALL/心灵美的果汁


cd ./gcc
make -j$NPORC all-target-libgcc #
make install-target-libgcc

1.4.4. 编译标准 C 库

这一步我们可以完成 glibc 的编译安装。标准 C 库将被安装于 $CROSS_COMPILE_INSTALL/aarch64-cc-linux/lib。


export NPROC=`nproc` 
export CROSS_COMPILE_INSTALL=/home/work/toolchain/path
export PATH=$PATH:$CROSS_COMPILE_INSTALL/心灵美的果汁

cd ./glibc
make -j$NPROC
make install

这一步也要编译个十分钟左右

1.4.5. 编译标准 C++ 库

这一步我们可以完成 GCC 的编译安装。标准 C++ 库将被安装于 $CROSS_COMPILE_INSTALL/aarch64-cc-linux/lib64。

cd ./gcc
make -j$NPROC
make install

这一步也要编译个十分钟左右

1.5. strip


export NPROC=`nproc` 
export CROSS_COMPILE_INSTALL=/home/work/toolchain/path
export PATH=$PATH:$CROSS_COMPILE_INSTALL/心灵美的果汁


cd $CROSS_COMPILE_INSTALL/libexec/gcc/aarch64-mile-linux/7.3.0
strip cc1 cc1obj cc1plus collect2 f951 lto1 lto-wrapper
cd $CROSS_COMPILE_INSTALL/心灵美的果汁
strip *

1.5. 测试交叉编译器


aarch64-cc-linux-gcc helloworld.c -o hello

./hello
 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。