(二)Linux下GCC与Makefile

Ubuntu下GCC的使用

gcc的基本使用:(以hello.c为例子)

gcc [options] [filenames]
  • gcc hello.c -o hello
    

    用于确定可执行文件的名称为output_filename,如果不给出这个选项,gcc就会默认给出预设的可执行文件a.out

  • gcc -o hello.c
    

    只是编译,不会链接成可执行文件,只是由.c文件生成.o的目标文件。

  • gcc -g hello.c 	/*output:a.out*/
    gcc -g hello.c -o hello /*output:hello*/
    

    产生调试工具所必需的符号信息,要调试,就必须加上这个选项

  • -O -O2
    gcc test.c -o test_o /*这是没有优化时的执行文件*/
    gcc -O test.c -o test_O /*这是优化时的执行文件*/
    测试的时候用指令:time ./可执行文件名
    

    对程序进行优化,这样产生的可执行文件执行效率可以提高。

    在这里插入图片描述

  • -I{dirname}
    gcc -I/opt/workspace/class/hello hello.c -o hello
    

    增加查询头文件位置,将所指示的目录下查询包含文件。gcc默认的查询头文件在/usr/include/下查找。

    在这里插入图片描述

  • -L{dirname}
    

    将dirname所指向的目录加入带库文件的玛瑙路列表中,在默认情况下,名客人路径为/usr/lib/下查询需要的库文件,这个选项告诉程序先去-L的目录下寻找,然后再去系统路径下查询。

  • -static 静态链接库文件
    gcc -static hello.c -o hello
    

    动态链接需要依赖库,但是静态连接直接将库和程序一起打包了。静态连接一般都很大,慎用!

    在这里插入图片描述

  • -Wall
    gcc -Wall hello.c /*会产生所有的警告信息*/
    相反的,不产生警告信息的是:-w
    
  • -DMACRO
    gcc -DYES hello.c -o hello
    

    在这里插入图片描述

    在这里插入图片描述

Ubuntu下GDB调试工具的使用

  1. 启动GDB

    gdb {可执行文件名}

  2. 打断点

    {break/b} {函数名字、行号、文件名:行号、行号 if条件}

  3. 查看程序

    list、l

  4. 查看所有设置的断点

    info break

  5. 删除断点

    delete 断点标号

  6. 开始运行程序

    run、r

  7. 执行下一步

    next、n

  8. 单步运行程序

    step、s

  9. 继续运行程序

    continue、c

  10. 查看指定变量值

    print、p {变量名}

  11. 运行程序,直到当前程序结束

    finishi

  12. 对指定变量进行监控

    watch 变量名

  13. 退出gdb

    quit、q

Makefile工程管理及make工具的使用

  1. makefile的规则

    target : 依赖对象

    <table>命令

    实例:## hello world makefile ###

    hello:hello.c
    	gcc hello.c -o hello
    

    指定makefile的文件

    make -f {makefile的文件名字}
    make -f Makefile_hello
    <*v*>[makefile==改名字==>Makefile_hello]
    		mv makefile Makefile_hello
    
  2. 伪目标
  3. 变量
    obj=main.o func1.o func2.o func3.o
    hello:$(obj)
    	gcc $(obj) -o hello
    
    变量的方式可以方便后期对依赖关系的修改,默认变量
     $^		代表都有的依赖文件
     $@		代表目标
     $<		代表第一个依赖文件
     
     makefile可以改写成:
     hello:main.o func1.o func2.o
     	gcc $^ -o $@
    
  4. 其他的内容
    • 注释: ##后面的内容视为注释内容

    • @{命令行}:取消回显

      ​ @gcc …………………………

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值