GCC 编译命令和基本使用

gcc编译一个c文件的过程,会经过几个步骤:预编译,编译,汇编,链接。

编译命令

-E:预编译, 讲带#的语句重新展开到制定文件中

比如#define, #include "*.h"

gcc -E main.c -o main.i

-S:编译,将.o文件编译成编译成汇编文件(.s文件)

gcc -S main.c -o mian.s

-c:汇编,相比-S命令,多了assemble,生成目标文件(.o文件)

gcc -c main.c -o mian.o

最常用的命令,将.c文件直接编译成可执行文件或.o文件。

gcc main.c -o main

备注:

-std:使用哪个c语言标准编译

// 使用c99编译

gcc -std=c99 

// 使用gnu99(c99的gnu扩展)编译

gcc -std=gnu99

 

编译静态库

gcc -c hello.c -o hello.o

// 静态库名称规则: lib+名字+.a(), 否则在使用-l链接的时候会找不到

ar -r libhello.a hello.o hello2.o 

gcc main.c libhello.a -o main

// 或者:

gcc -L ./ main.c -lhello -o main  (-L制定库的搜索路径,-l调用链接库)

说明:.a表示archive归档。ar类似于tar,起打包的作用。

编译动态库

gcc -c -fpic hello.c (fpic:采用浮动地址)

gcc -shared hello.o -o hello.so  (.so告诉编译器编译成动态库,省略的话会编译成exe)

合并:gcc -fpic -shared hello.c -o hello.so

 

GCC 编译选项

选 项

含 义

ansi  

支持符合ANSI标准的C程序

pedantic  

允许发出ANSI C标准所列的全部警告信息

pedantic-error

允许发出ANSI C标准所列的全部错误信息

w

关闭所有告警

Wall  

允许发出Gcc提供的所有有用的报警信息

werror 

把所有的告警信息转化为错误信息,并在告警发生时终止编译过程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值