1. 先用yum命令搜索一下可安装的交叉编译器安装包:
root@mycentos:/root # yum search aarch64
……
binutils-aarch64-linux-gnu.x86_64 : Cross-build binary utilities for aarch64-linux-gnu
gcc-aarch64-linux-gnu.x86_64 : Cross-build binary utilities for aarch64-linux-gnu
gcc-c++-aarch64-linux-gnu.x86_64 : Cross-build binary utilities for aarch64-linux-gnu
uboot-images-armv8.noarch : u-boot bootloader images for aarch64 boards
选一个执行安装命令:
root@mycentos:/root # yum install gcc-c++-aarch64-linux-gnu.x86_64
这步安装完成后,仅仅是只安装编译链工具:
root@mycentos:/root # ll /usr/bin/aarch64-linux-gnu-*
-rwxr-xr-x 1 root root 975K Jul 14 2017 /usr/bin/aarch64-linux-gnu-addr2line
-rwxr-xr-x 2 root root 1004K Jul 14 2017 /usr/bin/aarch64-linux-gnu-ar
-rwxr-xr-x 2 root root 1.5M Jul 14 2017 /usr/bin/aarch64-linux-gnu-as
-rwxr-xr-x 2 root root 651K Jun 28 2017 /usr/bin/aarch64-linux-gnu-c++
-rwxr-xr-x 1 root root 971K Jul 14 2017 /usr/bin/aarch64-linux-gnu-c++filt
-rwxr-xr-x 1 root root 647K Jun 28 2017 /usr/bin/aarch64-linux-gnu-cpp
-rwxr-xr-x 1 root root 33K Jul 14 2017 /usr/bin/aarch64-linux-gnu-elfedit
-rwxr-xr-x 2 root root 651K Jun 28 2017 /usr/bin/aarch64-linux-gnu-g++
-rwxr-xr-x 1 root root 647K Jun 28 2017 /usr/bin/aarch64-linux-gnu-gcc
-rwxr-xr-x 1 root root 301K Jun 28 2017 /usr/bin/aarch64-linux-gnu-gcov
-rwxr-xr-x 1 root root 1.1M Jul 14 2017 /usr/bin/aarch64-linux-gnu-gprof
-rwxr-xr-x 4 root root 2.0M Jul 14 2017 /usr/bin/aarch64-linux-gnu-ld
-rwxr-xr-x 4 root root 2.0M Jul 14 2017 /usr/bin/aarch64-linux-gnu-ld.bfd
-rwxr-xr-x 2 root root 988K Jul 14 2017 /usr/bin/aarch64-linux-gnu-nm
-rwxr-xr-x 2 root root 1.2M Jul 14 2017 /usr/bin/aarch64-linux-gnu-objcopy
-rwxr-xr-x 2 root root 1.7M Jul 14 2017 /usr/bin/aarch64-linux-gnu-objdump
-rwxr-xr-x 2 root root 1004K Jul 14 2017 /usr/bin/aarch64-linux-gnu-ranlib
-rwxr-xr-x 2 root root 506K Jul 14 2017 /usr/bin/aarch64-linux-gnu-readelf
-rwxr-xr-x 1 root root 975K Jul 14 2017 /usr/bin/aarch64-linux-gnu-size
-rwxr-xr-x 1 root root 975K Jul 14 2017 /usr/bin/aarch64-linux-gnu-strings
-rwxr-xr-x 2 root root 1.2M Jul 14 2017 /usr/bin/aarch64-linux-gnu-strip
此时如果用/usr/bin/aarch64-linux-gnu-gcc去编译c源码时会发现所有头文件都找不着,因为gcc-c++-aarch64-linux-gnu.x86_64包不负责头文件的安装。
2. 安装aarch64的glibc开发包
sysroot-glibc-linaro-{版本}-{日期}-aarch64-linux-gnu开发包由linaro提供,到http://releases.linaro.org/components/toolchain/binaries/去选择版本下载。
这里我选择下载sysroot-glibc-linaro-2.25-2019.12-aarch64-linux-gnu.tar.xz。
下载下来是个压缩包,先用xz命令进行解压,再用tar解包得到开发包目录。
root@mycentos:/root # xz -d sysroot-glibc-linaro-2.25-2019.12-aarch64-linux-gnu.tar.xz
root@mycentos:/root # tar -xvf sysroot-glibc-linaro-2.25-2019.12-aarch64-linux-gnu.tar
etc lib sbin usr var
运行aarch64-linux-gnu-gcc命令查看它的sysroot目录,:
root@mycentos:/root # aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/4.8.5/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../gcc-4.8.5-20150702/configure --bindir=/usr/bin --build=x86_64-redhat-linux-gnu --datadir=/usr/share --disable-decimal-float --disable-dependency-tracking --disable-gold --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-nls --disable-plugin --disable-shared --disable-silent-rules --disable-sjlj-exceptions --disable-threads --enable-checking= --enable-gnu-unique-object --enable-initfini-array --enable-languages=c,c++ --enable-linker-build-id --enable-nls --enable-obsolete --enable-targets=all --exec-prefix=/usr --host=x86_64-redhat-linux-gnu --includedir=/usr/include --infodir=/usr/share/info --libexecdir=/usr/libexec --localstatedir=/var --mandir=/usr/share/man --prefix=/usr --program-prefix=aarch64-linux-gnu- --sbindir=/usr/sbin --sharedstatedir=/var/lib --sysconfdir=/etc --target=aarch64-linux-gnu --with-bugurl=http://bugzilla.redhat.com/bugzilla/ --with-linker-hash-style=gnu --with-newlib --with-sysroot=/usr/aarch64-linux-gnu/sys-root --with-system-libunwind --with-system-zlib --without-headers --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/cloog-install
Thread model: single
gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
找到sysroot目录 --with-sysroot=/usr/aarch64-linux-gnu/sys-root
将解压出来的etc lib sbin usr var这些目录全部移动到/usr/aarch64-linux-gnu/sys-root中,就可以用aarch64-linux-gnu-gcc编译源码了。