如何指定gcc版本号|Linux下gcc命令怎么使用详细的参数说明

|

A. R 包安装的时候,怎么指定gcc的参数

Mac中的开发工具链都是围绕xcode的,但是对于只想使用gcc,g++编译c/c++代码的情况,装一个xcode实在没有必要。更新:4.3版本的xcode已经将图形开发界面和命令行工具分开了发布了。还有即使装了xcode,默认带的gcc编译器都是lvmm做前端的,并非纯正的gnugcc。如果你想用纯正的gcc,最好的法就是自己手动编译一个。主要有以下方法:1.通过port安装这种方法比较简单,前提是mac上已经安装port了,具体命令:安装最新的gcc48:sudoportinstallgcc48默认的安装目录是:/opt/local/bin/2.通过homebrew安装这种方法比较简单,前提是mac上已经安装homebrew了,具体命令:brewtaphomebrew/versionsbrewinstall[flags]gcc49其中[flags]一些需要支持的语言的桉树,例如–enable-cxx–enable-fortran3.Github参考mentforcleanup…#cd../../..#rm-rtemp-gcc完成后,将在/usr/gcc-4.8.0安装gcc,然后可以创建gcc的软链接或者将bin路径加入到$PAHT变量中

B. 如何查看当前 gcc 的版本

1. gcc -v(Display the programs invoked by the compiler)[[email protected] /]# gcc -vReading specs from /usr/i386-glibc-2.1-linux/lib/gcc-lib/i386-glibc21-linux/egcs-2.91.66/specsgcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)2. rpm -qa|grep gccrpm -qi gcc[[email protected] /]# rpm -qa|grep gccgcc-3.2.2-5gcc-c++-3.2.2-5libgcc-3.2.2-5compat-gcc-7.3-2.96.118gcc-g77-3.2.2-5gcc-java-3.2.2-5gcc-gnat-3.2.2-5compat-gcc-c++-7.3-2.96.1183. gcc -mpversion (Display the version of the compiler)[[email protected] /]# gcc -mpversionegcs-2.91.66*******************************************************************************************Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的 文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面 我们来介绍gcc所遵循的部分约定规则。.c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C,.cc或.cxx 为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i 为后缀的文件,是已经预处理过的C源代码文件;.ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。Gcc的执行过程虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也 称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接 着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编 语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完 成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案 库中连到合适的地方。Gcc的基本用法和选项在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。Gcc最基本的用法是∶gcc [options] [filenames]其中options就是编译器所需要的参数,filenames给出相关的文件名称。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶A)#includeB)#include “myinc.h”其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件, 这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。在程序设计中,如果我们需要的这种包含文件分 别分布在不同的目录中,就需要逐个使用-I选项给出搜索路径。-Ldirname,将dirname所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。在预设状态下,连接程序ld在系统 的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数 库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录。-lname,在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库。上面我们简要介绍了gcc编译器最常用的功能和主要参数选项,更为详尽的资料可以参看Linux系统的联机帮助。假定我们有一个程序名为test.c的C语言源代码文件,要生成一个可执行文件,最简单的办法就是∶gcc test.c这时,预编译、编译连接一次完成,生成一个系统预设的名为a.out的可执行文件,对于稍为复杂的情况,比如有多个源代码文件、需要连接档案库或者有其他比较特别的要求,就要给定适当的调用选项参数。再看一个简单的例子。整个源代码程序由两个文件testmain.c 和testsub.c组成,程序中使用了系统提供的数学库,同时希望给出的可执行文件为test,这时的编译命令可以是∶gcc testmain.c testsub.c □lm □o test其中,-lm表示连接系统的数学库libm.a。Gcc的错误类型及对策Gcc编译器如果发现源程序中有错误,就无法继续进行,也无法生成最终的可执行文件。为了便于修改,gcc给出错误资讯,我们必须对这些错误资讯逐个进行 分析、处理,并修改相应的语言,才能保证源代码的正确编译连接。gcc给出的错误资讯一般可以分为四大类,下面我们分别讨论其产生的原因和对策。第一类∶C语法错误错误资讯∶文件source.c中第n行有语法错误(syntex errror)。这种类型的错误,一般都是C语言的语法错误,应该仔细检查源代码文件中第n行及该行之前的程序,有时也需要对该文件所包含的头文件进行检 查。有些情况下,一个很简单的语法错误,gcc会给出一大堆错误,我们最主要的是要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C语言的基本教 材。第二类∶头文件错误错误资讯∶找不到头文件head.h(Can not find include file head.h)。这类错误是源代码文件中的包含头文件有问题,可能的原因有头文件名错误、指定的头文件所在目录名错误等,也可能是错误地使用了双引号和尖括号。第三类∶档案库错误错误资讯∶连接程序找不到所需的函数库,例如∶ld: -lm: No such file or directory这类错误是与目标文件相连接的函数库有错误,可能的原因是函数库名错误、指定的函数库所在目录名称错误等,检查的方法是使用find命令在可能的目录中寻找相应的函数库名,确定档案库及目录的名称并修改程序中及编译选项中的名称。

C. 怎样指定某个版本的gcc来编译程序

对于autotools来生成Makefile的程序包,不建议修改Makefile来指定GCC/G++的版本。最佳方案:./configure CC=你想使的C编译器的绝对路径./configure CXX=你想使的C++编译器的绝对路径比如:./configure CXX=/usr/local/bin/g++这样就可以很方便地让系统内多个版本的编译器共存了。

D. mac上怎么切换 gcc 的版本

1、首先以root用户登入 2、复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里 3、解压命令tar xvzf arm-linux-gcc-4.3.2 -C / 注意以上命令必须要有-C而且是大写,后边有个空格也要注意。 4、配置下编译环境路径 在控制台下输入 gedit /root/.bashrc 等一会出来文本编辑器后在文件最后(最后一行)加上下面代码。 export PATH=/usr/local/arm/4.3.2/bin:$PATH 保存关闭后,注销当前用户,用root账号重新登录系统(使刚刚添加的环境变量生效)。 此时可以在控制台输入: arm-linux-gcc -v 如果安装成功将会输出 arm-linux-gcc的版本号。 若想让它在非超级用户下使用那。首先,以非超级用户登入。 1、 输入命令:vi ~/.bashrc编辑.bashrc文件,在文件末尾加入如上面的内容 export PATH=/usr/local/arm/4.3.2/bin:$PATH 2、输入命令:gedit /etc/profile 在文件的末尾加上:PATH=/usr/local/arm/4.3.2/bin:$PATH 保存对profile的修改后,执行source /etc/profile就OK了,好了通样先注销当前用户再登录后进入控制台执行arm-linux-gcc -v 看看能否执行成功就可以了。

E. 装了两个版本的GCC,怎么规定用哪一个

如果你的两个版本的 gcc C 编译器是安装在不同的路径下的话,那么就很好办:你可以在环境设置文件中修改 PATH 环境变量:假设:环境设置文件的文件名为:my_environment,gcc version 1 是安装在 /usr/sbin1 下的话,gcc version 2 是安装在 /usr/sbin2 下的话,那么你就可以编辑 my_environment 文件,并修改其中的 PATH 变量。例如:PATH = /usr/sbin2 ; /usr/sbin1,/usr/sbin1 在 /usr/sbin2 之后。这样的话,系统就会自动调用 /usr/sbin2 下的 gcc 编译程序。如果想使用 gcc version1版本的编译程序,则再次修改该变量即可。

F. 如何更换linux下GCC的版本(越详细越好)

具体方法是下载一个新的版本的Gcc编译器,在linux下自定义一个目录,然后解压在该目录下,之后回vi /root/.bash_profile ,将答该文件中的 PATH 变量改为 PATH=$PATH:$HOME/bin:/xxxx/bin (xxxx代表你的解压的路径),保存后退出,再输入source /root/.bash_profile.好了新的编译器安装成功了。

G. Ubuntu下两个gcc版本切换

这里可以看出我们使用的是gcc version 4.9.4, 但是如果我们想要使用5.X的版本的话要怎么办呢?先要看看有么有安装 这里我已经安装过多个版本所以可以看到有gcc-4.9, gcc-5 还有gcc-7,要是没有你想要的版本,就要先安装了 然后进行配置。 安装好后输入以下指令: 接着输入: 会看到如下的选项: 要维持当前值[*]请按回车键,或者键入选择的编号: 要想用哪个gcc就输入编号吧。 同样也要设置一下g++的: 如果想删除可选项的话可以键入以下指令: 再用gcc -v 来看一下版本是否改变了。

H. Linux下gcc命令怎么使用,详细的参数说明

用法:gcc [选项] 文件…选项: -pass-exit-codes 在某一阶段退出时返回最高的错误码 –help 显示此帮助说明 –target-help 显示目标机器特定的命令行选项 (使用‘-v –help’显示子进程的命令行参数) -mpspecs 显示所有内建 spec 字符串 -mpversion 显示编译器的版本号 -mpmachine 显示编译器的目标处理器 -print-search-dirs 显示编译器的搜索路径 -print-libgcc-file-name 显示编译器伴随库的名称 -print-file-name=<库> 显示 <库> 的完整路径 -print-prog-name=<程序> 显示编译器组件 <程序> 的完整路径 -print-multi-directory 显示不同版本 libgcc 的根目录 -print-multi-lib 显示命令行选项和多个版本库搜索路径间的映射 -print-multi-os-directory 显示操作系统库的相对路径 -Wa,<选项> 将逗号分隔的 <选项> 传递给汇编器 -Wp,<选项> 将逗号分隔的 <选项> 传递给预处理器 -Wl,<选项> 将逗号分隔的 <选项> 传递给链接器 -Xassembler <参数> 将 <参数> 传递给汇编器 -Xpreprocessor <参数> 将 <参数> 传递给预处理器 -Xlinker <参数> 将 <参数> 传递给链接器 -combine 将多个源文件一次性传递给汇编器 -save-temps 不删除中间文件 -pipe 使用管道代替临时文件 -time 为每个子进程计时 -specs=<文件> 用 <文件> 的内容覆盖内建的 specs 文件 -std=<标准> 指定输入源文件遵循的标准 –sysroot=<目录> 将 <目录> 作为头文件和库文件的根目录 -B <目录> 将 <目录> 添加到编译器的搜索路径中 -b <机器> 为 gcc 指定目标机器(如果有安装) -V <版本> 运行指定版本的 gcc(如果有安装) -v 显示编译器调用的程序 -### 与 -v 类似,但选项被引号括住,并且不执行命令 -E 仅作预处理,不进行编译、汇编和链接 -S 编译到汇编语言,不进行汇编和链接 -c 编译、汇编到目标代码,不进行链接 -o <文件> 输出到 <文件> -x <语言> 指定其后输入文件的语言 允许的语言包括:c c++ assembler none ‘none’意味着恢复默认行为,即根据文件的扩展名猜测 源文件的语言以 -g、-f、-m、-O、-W 或 –param 开头的选项将由 gcc 自动传递给其调用的 不同子进程。若要向这些进程传递其他选项,必须使用 -W<字母> 选项。

I. linux 怎样查看arm-linux-gcc 的版本

1、首先以root用户登入2、复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里3、解压命令tar xvzf arm-linux-gcc-4.3.2 -C /注意以上命令必须要有-C而且是大写,后边有个空格也要注意。4、配置下编译环境路径 在控制台下输入 gedit /root/.bashrc 等一会出来文本编辑器后在文件最后(最后一行)加上下面代码。export PATH=/usr/local/arm/4.3.2/bin:$PATH保存关闭后,注销当前用户,用root账号重新登录系统(使刚刚添加的环境变量生效)。此时可以在控制台输入: arm-linux-gcc -v 如果安装成功将会输出 arm-linux-gcc的版本号。若想让它在非超级用户下使用那。首先,以非超级用户登入。1、 输入命令:vi ~/.bashrc编辑.bashrc文件,在文件末尾加入如上面的内容export PATH=/usr/local/arm/4.3.2/bin:$PATH2、输入命令:gedit /etc/profile在文件的末尾加上:PATH=/usr/local/arm/4.3.2/bin:$PATH保存对profile的修改后,执行source /etc/profile就OK了,好了通样先注销当前用户再登录后进入控制台执行arm-linux-gcc -v 看看能否执行成功就可以了。

J. 怎么给ndk指定gcc版本

给ndk指定gcc版本,在Android.mk里面修改下面内容:CC=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gccCXX=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-g++AS=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-asLD=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ldDEPCC=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gccAR=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-arRANLIB=$(NDK_PATH)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ranlib


赞 (0)