首页 > 其他分享 >gcc编译器的常用命令行参数

gcc编译器的常用命令行参数

时间:2022-08-24 21:15:06浏览次数:67  
标签:文件 gcc 生成 编译 编译器 常用命令 test main

  1. 在学习常用的gcc命令行参数前,先了解gcc在执行编译工作的过程
1、预处理,生成 .i 的文件[预处理器cpp]
2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs]
3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]
4、连接目标代码, 生成可执行程序 [链接器ld]
  1. -E:执行到预处理
//输出预编译结果
gcc main.c -E
  1. -S:执行到源代码到汇编代码的转换
//输出汇编代码
gcc main.c -S
  1. -c:执行到编译
//输出目标文件(.o为后缀名的文件)
  1. -o:生成目标文件
//生成qq.exe可执行程序(windows下)
gcc main.c -o qq
//生成.i文件
gcc  -E  test.c  -o  test.i    //.i文件
  1. -g或者-ggdb:生成供调试用的可执行文件
gcc main.c -g
  1. -O:编译器对代码进行自动优化编译,输出效率更高的可执行文件
//-O后面还可以跟上数字指定优化级别,常用的数字0-3.
//O0表示不做优化,O1为默认优化
gcc main.c -O2
  1. -W:在编译中开启一些额外的警告(warning)信息
gcc main.c -W
// -Wall:将所有的警告信息全公开
gcc main.c -Wall
// -w:关闭所有警告信息
  1. -v/--version:查看编译器版本
  2. -I:编译时指定头文件路径
//main.c文件内容如下:
#include <stdio.h>
#include "log.h"

int main()
{
	printf("logNum:%d\n",logNum);
	return 0;
}
//log.h文件的内容如下
#ifndef _LOG_H_
#define _LOG_H_
const int logNum = 10;
#endif
//main.c与comon文件夹位于同级目录下
//-I指明head.h所在的目录,-o指定生成可执行程序的名称
gcc main.c -I ./comon/ -o qq
  1. -L dirname:指明链接过程中链接程序ld到指定的目录中寻找。
//-L dirname:确定库文件(.so和.a的集合)所在的目录
  1. -lname:链接时装载名为libname.a的函数库。Linux下的库文件在命名时有一个约定,就是应该以 lib 这3个字母开头,由于所有的库文件都遵循了同样的规范,因此在用 -l 选项指定链接的库文件名时可以省去 lib 这3个字母。
例如:-lm 表示链接名为 libm.a 的数学函数库。
  1. -pedantic:当gcc在编译不符合ANSI/ISO C 语言标准的源代码时,将产生相应的警告信息。
//main.c文件内容如下:
#include <stdio.h>
void main(void)
{
    printf("HelloWorld");
    return;
}
//将产生警告信息
gcc main.c -o qq -pedantic
  1. -Werror:要求 gcc 将所有的警告信息当成错误进行处理.
  2. -static:默认情况下,gcc 在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库。
    如果需要的话,可以在编译时加上 -static 选项,强制使用静态链接库。
  3. -shared:生成一个共享的目标文件,它能够与其他的目标一起链接生成一个可执行的文件。:生成一个共享的目标文件,它能够与其他的目标一起链接生成一个可执行的文件。
  4. -save-temps:保存编译过程中生成的一些列中间文件
# gcc test.c -o test -save-temps
除了生成执行文件test之外,还保存了test.i 和 test.s,test.o中间文件,供用户查询调试。

标签:文件,gcc,生成,编译,编译器,常用命令,test,main
From: https://www.cnblogs.com/xiaocer/p/16621557.html

相关文章

  • MySQL学习(3)---MySQL常用命令
    ps:此随笔基于mysql5.7.*版本。已知root账户密码进行登录格式:mysql[-h地址][-p端口]-u用户名-p密码省略不写地址或端口则自动使用默认。(地址:localhost;端口:3306)......
  • Linux-常用命令
    1.关机和重启需要系统管理员用户权限1)重启inti6或者reboot2)关机如果没有执行关机命令,强制断电或关闭本地虚拟机的窗口,会导致Linux操作系统文件的损坏,严重的......
  • GCC-GCC中的-Wl选项说明
    GCC-GCC中的-Wl选项说明在GCC编译程序时,由于GCC命令不经能够编译,也能够链接程序,GCC链接程序是通过ld命令实现的,如何将GCC的命令行参数传递给ld命令呢,这就是通过-Wl,来实现......
  • Git 常用命令记录每天来一遍防止忘记
    记录一些git常用命令,每天敲一遍,防止忘记gitadd后续补充gitcommitgitpushgitstatusgitbranchgitcheckoutgitrebasegitmergegitcherrypickgitstas......
  • maven常用命令和maven指令生命周期
    maven常用命令clean:把我们自己编译好的项目中的信息删除掉,清除本地编译好的信息mvncompile:是吧srcmain下的方法进行编译放置在target目录下mvntest:编译测试下的ja......
  • maven 常用命令
    maven的主要用于管理项目中使用到的jar,比如控制版本,打包当前项目成jar提供运行等。maven命令可以从IDEA的操作面板上看到:   比较常用的有一下几个:Mavenclean......
  • python安装包镜像和git常用命令
    Python安装包镜像https://registry.npmmirror.com/binary.htmlpythonPYPI镜像http://pypi.doubanio.com/simple/git常用命令gitcloneXXX.git......
  • 【Nginx】Nginx常用命令
    ./nginx  #启动nginx:进入usr/local/nginx/sbin目录,执行 sudosystemctlstartnginx.service#启动nginxsudosystemctlenablenginx.service #设置开机自动运......
  • Git 常用命令行
    Git设置:--Gitlab公司账号gitconfig--globaluser.name"***"gitconfig--globaluser.email"g**@nan**.com"--Github个人账号gitconfig--localuser.name......
  • Maven常用命令和Maven生命周期
    Maven常用命令常用命令为:mvnarchetype:create:创建Maven项目mvncompile:编译源代码mvntest-compile:编译测试代码mvntest:运行应用程序中的......