linux学习笔记——gcc用法

参考链接:GCC使用
-E: 只执行预处理命令

gcc -E hello.c > pianoapan.txt 
gcc -E hello.c | more 
gcc -E main.c > main.i #编译器将main.c预处理结果输出 main.i 文件。

这个不生成文件, 你需要把它重定向到一个输出文件里面。

-S:只执行预处理和编译,就是指把文件编译成为汇编代码。

gcc -S hello.c 
gcc -S main.i -o main.s

编译器将预处理结果文件main.i翻译成汇编代码main.s

-c: 只执行预处理、编译、汇编,也就是他只把程序做成obj文件,生成.o的目标文件。编译和汇编,但不要链接。

gcc -c hello.c 
gcc -c main.s -o main.o

无参数: 通过gcc 不加参数可以一步直接编译生成可执行文件

gcc main.c

这里生成的是可执行文件a.out,当然可以通过-o选项更改生成文件的名字,比如将生成的可执行文件命名为hello.exe

gcc main.c -o main.exe

-o< file >: 将输出放入<文件>,也就是指定生成的文件名,gcc默认的生成文件名是a.out,所以可以指定生成文件名。
-g: 加入调试信息,否则不能调试
添加链接描述
添加链接描述

-l(小写L) 需要链接的库名称。即链接库文件去掉lib前缀和.so后的部分。如libev.so就是 -lev;libace.so就是 -lace,如果库文件放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们只用-l参数的话,链接还是会出错,出错信息大概是:“/usr/bin/ld: cannot find-lxxx”,也就是链接程序ld在那3个目录里找不到。

-L 这时另外一个参数-L就派上用场了,比如常用的X11的库,它放在/usr/X11R6/lib目录下,我们编译时就要用-L/usr/X11R6/lib -lX11参数,-L参数跟着的是库文件所在的目录名。

-I(大写i) include头文件的搜索路径。当有此选项时,优先搜索此路径下的头文件。然后按照#include后面是""还是<>来决定是优先在当前目录搜索还是优先在系统目录搜索。默认头文件的路径为当前目录./ 和系统目录 /usr/include /usr/local/include。

Linux基础——gcc编译、静态库与动态库(共享库)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值