Linux--gcc的使用

gcc编译常用命令:

假设编译.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文件;

命令:gcc -E test.c

作用:将test.c预处理后的代码输出到标准输出(默认为屏幕)上;

(4)选项 -S

命令:gcc -S test.i    或    gcc -S test.i -o test.s

作用:将预处理后的文件test.i汇编成test.s文件;

(5)选项 -c

命令:gcc -c test.s

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

(6)选项 -o

命令:gcc test.o -o test

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

(7)选项-O

命令:gcc -O1 test.c -o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长;


gcc支持的后缀名

  • .c    C源程序
  • .C    C++源程序
  • .cc    C++源程序
  • .cxx    C++源程序
  • .n    Objective-C源程序
  • .i    预处理过的C程序
  • .ii    预处理过的C++程序
  • .s    编译过后的汇编程序
  • .ss    编译过后的汇编程序
  • .h    头文件
  • .o    目标文件
  • .a  /  .so    编译后的库文件

gcc指令一般格式:

gcc [参数] [要编译的文件] [参数] [目标文件]

gcc编译.c文件流程:

源代码(.c)->预处理->编译->汇编->链接->可执行文件

gcc一般参数:

  • -c  只是编译不链接,生成目标文件
  • -S  只是编译不汇编,生成汇编代码
  • -E  只进行预编译
  • -g 在可执行文件中包含调试信息(与下一篇的必须命令)
  • -o file 把输出文件输出到file中
  • -v 显示gcc的版本信息
  • -I dir 在头文件的搜索路径中添加dir目录
  • -L dir 在库文件的路径列表中添加dir目录
  • -static 链接静态库
  • -library 连接名问library的库文件

gcc告警与出错参数:

  • -ansi 支持符合ANSI的C程序
  • -pedantic 允许发出ANSI C标准所列的全部警告信息
  • -pedantic -error 允许发出ANSI C标准所列的全部错误信息
  • -w 关闭所有告警
  • -Wall 允许发出gcc提供的所有的告警信息
  • -werror 把所有的告警信息转化为错误的信息,并在告警发生时终止编译

函数库:

        c程序中,没有定义一些系统函数的实现,预编译中的stdio.h也只包含该函数的声明,没有该函数的实现,如何实现这些函数的调用?

        系统把这些函数的实现都做到名为 libc.os.6 的库函数中,在没有特别指定时,gcc会到系统默认的搜索路径"usr/lib"下进行查找,也就是链接到libc.os.6库函数中去,实现系统函数的调用;

静态库与动态库:

静态库指编译链接时,把库文件的代码全部加入到可执行文件中,生成的文件较大,但在运行时就不需要库文件函数了。其后缀为.a;

动态库指在编译时没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库。gcc在编译时默认使用动态库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值