1已经有的编译器说明
??不知道什么时候虚拟机Ubuntu18.04上的编译器变成了7.5.0版本,键入命令 gcc -v 可以看到以下信息:
root@zwg-virtual-machine:~
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
??之所以想删除这个编译器,是由于在学习韦东山第一二期衔接课程中制作根文件系统时,制作出来的yaffs2文件系统始终不能运行,而韦东山自带的yaffs2文件系统却能运行,因此怀疑是编译器出了问题。从上面的信息可以看到编译器的Target是 x86_64-linux-gnu,是x86平台,而我们需要的是arm-linux-gcc,不知道是不是这里的原因。键入命令:
apt-get remove gcc
??错误:上述内容搞错了两个概念,gcc -v出来的是虚拟机上的编译器,arm-linux-gcc -v出来的才是交叉编译器。在虚拟机上键入arm-linux-gcc -v,得到如下信息:
root@zwg-virtual-machine:~
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2008q3-72' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
也就是说我们虚拟机上真正用到嵌入式开发里的交叉编译器是arm-linux-gcc-4.3.2
2 将arm-linux-gcc-4.3.2更换为arm-linux-gcc-3.4.5
??方法在韦东山书《嵌入式Linux应用开发完全手册》第25页 ??注意:更换新的交叉编译器并不需要卸载掉原来的交叉编译器,只需要将新的编译器文件解压到虚拟机中,然后改变环境变量路径即可。
3 重新安装虚拟机上的gcc编译器
??在上文卸载掉的gcc 7.5.0重新安装回来,因为学习过程中发现制作yaffs2文件系统映像的工具需要首先在虚拟机上编译,而这个编译是用的虚拟机自带的编译器,不是交叉编译器。因此需要重新安装,教程链接:https://blog.csdn.net/Z88988/article/details/120433806
|