01. 命令概述
gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。
gcc是GNU编译器套件(GNU Compiler Collection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。
02. 命令格式
用法:gcc [选项] 文件...
03. 常用选项
-pass-exit-codes 在某一阶段退出时返回最高的错误码 --help 显示此帮助说明 --target-help 显示目标机器特定的命令行选项 --help={common|optimizers|params|target|warnings|[^] {joined|separate|undocumented}}[,...] 显示特定类型的命令行选项 (使用‘-v --help'显示子进程的命令行参数) --version 显示编译器版本信息 -dumpspecs 显示所有内建 spec 字符串 -dumpversion 显示编译器的版本号 -dumpmachine 显示编译器的目标处理器 -print-search-dirs 显示编译器的搜索路径 -print-libgcc-file-name 显示编译器伴随库的名称 -print-file-name=<库> 显示 <库> 的完整路径 -print-prog-name=<程序> 显示编译器组件 <程序> 的完整路径 -print-multiarch Display the target's normalized GNU triplet, used as a component in the library path -print-multi-directory 显示不同版本 libgcc 的根目录 -print-multi-lib 显示命令行选项和多个版本库搜索路径间的映射 -print-multi-os-directory 显示操作系统库的相对路径 -print-sysroot 显示目标库目录 -print-sysroot-headers-suffix 显示用于寻找头文件的 sysroot 后缀 -Wa,<选项> 将逗号分隔的 <选项> 传递给汇编器 -Wp,<选项> 将逗号分隔的 <选项> 传递给预处理器 -Wl,<选项> 将逗号分隔的 <选项> 传递给链接器 -Xassembler <参数> 将 <参数> 传递给汇编器 -Xpreprocessor <参数> 将 <参数> 传递给预处理器 -Xlinker <参数> 将 <参数> 传递给链接器 -save-temps 不删除中间文件 -save-temps=<arg> 不删除中间文件 -no-canonical-prefixes 生成其他 gcc 组件的相对路径时不生成规范化的 前缀 -pipe 使用管道代替临时文件 -time 为每个子进程计时 -specs=<文件> 用 <文件> 的内容覆盖内建的 specs 文件 -std=<标准> 指定输入源文件遵循的标准 --sysroot=<目录> 将 <目录> 作为头文件和库文件的根目录 -B <目录> 将 <目录> 添加到编译器的搜索路径中 -v 显示编译器调用的程序 -### 与 -v 类似,但选项被引号括住,并且不执行命令 -E 仅作预处理,不进行编译、汇编和链接 -S 编译到汇编语言,不进行汇编和链接 -c 编译、汇编到目标代码,不进行链接 -o <文件> 输出到 <文件> -pie Create a position independent executable -shared Create a shared library -x <语言> 指定其后输入文件的语言 允许的语言包括:c c++ assembler none ‘none'意味着恢复默认行为,即根据文件的扩展名猜测 源文件的语言
04. 参考示例
4.1 生成默认的可执行文件
[deng@localhost bak]$ gcc test.c [deng@localhost bak]$
将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
4.2 指定输出文件
[deng@localhost bak]$ gcc test.c -o test [deng@localhost bak]$ ls 5th 6th 7th 8th 9th test test.c [deng@localhost bak]$
将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
4.3 仅作预处理,不进行编译、汇编和链接
[deng@localhost bak]$ gcc -E test.c -o test.i [deng@localhost bak]$
将test.c预处理输出test.i文件。
4.4 编译到汇编语言,不进行汇编和链接
[deng@localhost bak]$ gcc -S test.c -o test.s [deng@localhost bak]$ ls 5th 6th 7th 8th 9th test test.c test.i test.s [deng@localhost bak]$
将预处理输出文件test.i汇编成test.s文件。
4.5 编译、汇编到目标代码,不进行链接
[deng@localhost bak]$ gcc -c test.c -o test.o [deng@localhost bak]$ ls 5th 6th 7th 8th 9th test test.c test.i test.o test.s [deng@localhost bak]$
4.6 将目标代码生成可执行文件
[deng@localhost bak]$ gcc test.o -o test [deng@localhost bak]$
将编译输出文件test.o链接成最终可执行文件test。
4.7 编译时指定优化级别
[deng@localhost bak]$ gcc -O1 test.c -o test [deng@localhost bak]$
使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
4.8 多文件编译
[deng@localhost bak]$ gcc testfun.c test.c -o test [deng@localhost bak]$
将testfun.c和test.c分别编译后链接成test可执行文件。
4.9 多文件编译方法二
[deng@localhost bak]$ gcc -c test.c [deng@localhost bak]$ gcc -c testfun.c [deng@localhost bak]$ gcc test.o testfun.o -o test [deng@localhost bak]$
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。