1.Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
2.å¦ä½å®è£
gcc-linaro-arm-linux-gnueabihf-4.8-2014.03
3.GNU软件简介
Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
在编译Ubuntu驱动时,码下由于使用的码下gcc版本为7.3.0,通过apt管理和下载都无法直接安装,码下因此需要从源码编译安装gcc7.3.0编译器。码下
GCC,码下作为GNU项目的码下远程开机软件源码重要组成部分,是码下一款遵循GPL许可证的自由软件。起初,码下它为GNU操作系统设计,码下如今已广泛应用于Linux、码下BSD、码下MacOS X等系统,码下甚至在Windows上也有应用。码下GCC支持多种处理器架构,码下如x、码下ARM和MIPS,并且支持多种编程语言,如C、C++、改源码咋收费Fortran、Pascal等。
要从源码安装gcc7.3.0,首先需要下载源码包。下载地址为:mirrors.tuna.tsinghua.edu.cn...
安装过程分为几个步骤。首先,确保网络连接,因为需要依赖库,如libgmp-dev、源码上传打不开libmpfr-dev和libmpc-dev。安装完这些后,不要卸载已有的gcc,因为可能会遇到问题。
下载并解压gcc-7.3.0.tar.gz,然后执行./configure。注意增加c和c++的配置,避免编译结果只有g++。配置完成后,qt源码编译参数进行make -j4编译,可能会遇到错误,如"fatal error: asm/errno.h: No such file or directory",这时需要修改头文件路径。
继续编译,可能会遇到"sanitizer_syscall_generic.inc::: error: '__NR_open' was not declared in this scope",解决方法是修正头文件链接。最后,编译成功后执行sudo make install,iis日志分析源码并确认安装版本。
在安装过程中,有两点需要注意:一是本地需要g++,否则编译时会出错,解决方法是安装gcc;二是安装后可能只有g++,没有gcc,此时需在./configure阶段添加c和c++的配置。
å¦ä½å®è£ gcc-linaro-arm-linux-gnueabihf-4.8-.
1ã å¦æè¦èªå·±ç¼è¯å·¥å ·é¾ï¼ä»ä»¥ä¸é¾æ¥ä¸è½½æºç
crosstools-ngä¸è½½å°å
http://ymorin.is-a-geek.org/download/crosstool-ng/
åæ¶å¯¹æ¯ä¸ä¸ªçæ¬é½æç¸åºçè¡¥ä¸æ们尽éæè¿äºè¡¥ä¸æä¸ï¼è¿äºè¡¥ä¸çä¸è½½å°åæ¯
http://ymorin.is-a-geek.org/download/crosstool-ng/-fixes/
2ã 解åå·¥å ·é¾å缩å
$ cd ~
$ mkdir toolchain
$ cd toolchain
å°ä¸å¥½çgcc-linaro-arm-linux-gnueabihf-4.8-.æ·è´å°toolchainç®å½ä¸å¹¶è§£å
$ tar -xvf gcc-linaro-arm-linux-gnueabihf-4.8-. gcc-4.8
3ã ç¯å¢åéçæ·»å
ä¿®æ¹æ件/etc/bash.bashrcæ·»å å¦ä¸å 容
export PATH=$PATH:/home/linux/toolchain/gcc-4.8/bin
éå¯é ç½®æ件
$ source /etc/bash.bashrc
4ã å·¥å ·é¾çæµè¯
$ arm-none-linux-gnueabi-gcc âv
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/david/Exynos/toolchain/gcc-4.6.4/bin/../libexec/gcc/arm-armjzfssf-linux-gnueabi/4.6.4/lto-wrapper
Target: arm-armjzfssf-linux-gnueabi
Configured with: /work/builddir/src/gcc-4.6.4/configure--build=i-build_pc-linux-gnu --host=i-build_pc-linux-gnu--target=arm-armjzfssf-linux-gnueabi--prefix=/opt/TuxamitoSoftToolchains/arm-armjzfssf-linux-gnueabi/gcc-4.6.4--with-sysroot=/opt/TuxamitoSoftToolchains/arm-armjzfssf-linux-gnueabi/gcc-4.6.4/arm-armjzfssf-linux-gnueabi/sysroot--enable-languages=c,c++ --with-arch=armv6zk --with-cpu=armjzf-s--with-tune=armjzf-s --with-fpu=vfp --with-float=softfp--with-pkgversion='crosstool-NG hg+default-dfa9de - tc'--disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap--disable-libgomp --disable-libssp --disable-libquadmath--disable-libquadmath-support--with-gmp=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-mpfr=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-mpc=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-ppl=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-cloog=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-libelf=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'--enable-threads=posix --enable-target-optspace --without-long-double---disable-nls --disable-multilib --with-local-prefix=/opt/TuxamitoSoftToolchains/arm-armjzfssf-linux-gnueabi/gcc-4.6.4/arm-armjzfssf-linux-gnueabi/sysroot--enable-c --enable-long-long
Thread model: posix
gcc version 4.6.4 (crosstool-NG hg+default-dfa9de -tc)
è¿æ ·æ们ç交åå·¥å ·é¾å°±å®è£ 好äº
GNU软件简介
GNU软件是GNU计划所开发的软件,以充分利用计算机硬件能力而闻名,相较于Unix中的同类软件,功能更加强大,因此广受欢迎。这些软件在GNU通用公共许可的保护下,允许任何人免费使用和传播,但必须同时提供源程序,因此在Unix系统及FreeBSD等系统中广泛应用。 部分GNU软件由Free Software Foundation的成员编写,但大多数软件是由志愿者贡献的。部分贡献的软件由Free Software Foundation免费分发,但也有软件由作者保留版权。GNU软件采用copyleft保护,旨在限制将GNU软件用于牟利目的,同时允许其他软件使用copyright保护。Stallman通过GNU通用公共许可详细阐述了copyleft的观念,要求传播GNU软件时必须同时传播源代码。由于GNU通用公共许可的流行,许多非自由软件基金会的自由软件也采用了GNU通用公共许可来保护自己的软件,避免被商业公司用于获利。 GNU软件的许可相对宽松,许多公司利用GNU软件进行商业活动,但只要同时提供了GNU软件的源代码,就不违反GNU软件的许可。这使得GNU软件在促进软件自由、促进技术创新以及推动开放源代码运动方面发挥着重要作用。扩展资料
GNU软件是通过GNU项目发布的软件,它是一种根据GNU软件包的README手册以及自由软件指南开发的软件,大多数GNU软件是免费分发的(copyleft),但不是所有的都这样,然而,所有的GNU软件必须是自由软件。