linux下gcc的安装与使用

linux下gcc的安装与使用,第1张

方法一:

该方法超简单:

sudoapt-getbuild-depgcc

就上面这条命令就可以搞定

方法二:

sudoapt-getinstallbuild-essential

还是简单,一句命令也可以搞定

安装完了可以执行

gcc--version

的命令来查看版本,输出如下:

gcc(GCC)4.2.3(Ubuntu4.2.3-2ubuntu7)

Copyright(C)2007FreeSoftwareFoundation,Inc.

编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。

gcc命令提供了非常多的命令选项,但并不是所有都要熟悉,初学时掌握几个常用的就可以了,到后面再慢慢学习其它选项,免得因选项太多而打击了学习的信心。

一. 常用编译命令选项

假设源程序文件名为test.c。

1. 无选项编译链接

用法:#gcc test.c

作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

2. 选项 -o

用法:#gcc test.c -o test

作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

3. 选项 -E

用法:#gcc -E test.c -o test.i

作用:将test.c预处理输出test.i文件。

4. 选项 -S

用法:#gcc -S test.i

作用:将预处理输出文件test.i汇编成test.s文件。

5. 选项 -c

用法:#gcc -c test.s

作用:将汇编输出文件test.s编译输出test.o文件。

6. 无选项链接

用法:#gcc test.o -o test

作用:将编译输出文件test.o链接成最终可执行文件test。

7. 选项-O

用法:#gcc -O1 test.c -o test

作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

二. 多源文件的编译方法

如果有多个源文件,基本上有两种编译方法:

[假设有两个源文件为test.c和testfun.c]

1. 多个文件一起编译

用法:#gcc testfun.c test.c -o test

作用:将testfun.c和test.c分别编译后链接成test可执行文件。

2. 分别编译各个源文件,之后对编译后输出的目标文件链接。

用法:

#gcc -c testfun.c //将testfun.c编译成testfun.o

#gcc -c test.c //将test.c编译成test.o

#gcc -o testfun.o test.o -o test //将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

ctrl +alt+t

给分哦 求采纳

gcc是linux下一款c编译器,比较强悍。

gcc -E test.c -o test.i(对test文件预处理)

gcc -S test.s -o test.s(生成汇编)

gcc -C test.s -o test.o(生成目标文件)

gcc -o test test.o(连接目标文件)

用法:gcc [选项] 文件...

选项:

-pass-exit-codes 在某一阶段退出时返回最高的错误码

--help 显示此帮助说明

--target-help显示目标机器特定的命令行选项

(使用‘-v --help’显示子进程的命令行参数)

-dumpspecs 显示所有内建 spec 字符串

-dumpversion 显示编译器的版本号

-dumpmachine 显示编译器的目标处理器

-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<字母>选项。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8614535.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-18
下一篇2023-04-18

发表评论

登录后才能评论

评论列表(0条)

    保存