linux系统编程——cmake,make,gcc,gdb等工具的使用

对于很小的工程,我们可以对于一个个文件手动完成编译和链接工作,比如像这篇文章说的这样,一个个的进行编译和链接。

但是工程大了之后自然就不能这么使用了,因此我们需要makefile来指明编译的顺序和编译之后的各个文件之间的依赖关系,但是对于一个较大的工程而言,写makefile也是一件让人头疼的事情。

除此之外,不同平台的构建文件规范是不一样的,如果有一种工具可以自动生成不同平台的构建文件就好了。

这个时候,就有了cmake,具体cmake的使用是参照这篇文章,写的非常的详细。

另外,上面这边文章讲了如何生成静态库,关于动态库的生成可以参考这篇文章

cmake做了以下事情:

  1. 通过CMakeList.txt文件来控制整个编译流程,自动生成makefile文件,实现了“Write once, run everywhere”的目标,可以支持win和*nix,通过在平台环境上进行搜索用于build的文件,windows+VS环境下,可以帮你生成.sln,vcxproj文件,而在*nix则是makefile,同理MAC OS则是xcode的项目文件。

GCC的相关命令:

  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文件。

  4. 选项 -S
  用法:#gcc -S test.i 
  作用:将预处理输出文件test.i汇编成test.s文件。

  5. 选项 -c
  用法:#gcc -c test.s
  作用:将汇编输出文件test.s编译输出test.o文件。

  6. 无选项链接
  用法:#gcc test.o -o test
  作用:将编译输出文件test.o链接成最终可执行文件test。

  7. 选项-O
  用法:#gcc -O1 test.c -o test
  作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

GCC多文件编译

  1.多个文件一起编译
  用法:#gcc testfun.c test.c -o test
  作用:将testfun.c和test.c分别编译后链接成test可执行文件。

  2.分别编译各个源文件,之后对编译后输出的文件进行链接
  用法:#gcc -c testfun.c
          #gcc -c test.c
       #gcc testfun.o test.o -o test
  作用:好处是只修改了某个文件的时候,不用对整个工程都进行一次编译

GDB的调试方式

  GDB调试的方式有三种:

  • gdb <program>
    program也就是你的执行文件,一般在当前目录下。
  • gdb <program> core
    用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。
  • gdb <program> <PID>
    如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。

更加具体的gdb使用细则可以看:这里,不过注意一点,要使用gdb,必须在编译阶段加入-g选项。

转载于:https://www.cnblogs.com/xdmonkey/p/8901229.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值