欢迎光临
我的个人博客网站

GCC编译命令的学习

1、基本编译命令

gcc prog.c -o prog

prog.c 为gcc的输入命令

prog 为输出文件,可执行文件

file prog可查看文件类型

./prog 则执行prog文件

./prog > output 输出信息被定向到 output 文件中

 

 2、多文件编译

如果需要调试,须在gcc后加 -g -Wall -Wshadow

gcc -g -Wall -Wshadow -c prog1.c

gcc -g -Wall -Wshadow -c prog2.c

gcc -g -Wall -Wshadow prog1.o prog2.o -o prog

  ——–前两行生成 .o 文件,后面编译

不过上面很麻烦,所以引入make工具

 

3、makefile 文件

我们用vim Makefile创建该文件,文件内容如下:

#后号是注释

GCC = gcc

CFLAGS = -g -Wall –Wshadow

#用标识符代替

gcc -g -Wall –Wshadow #面向用户时 -g 用 –O 代替 大写的O

 

prog: prog1.o prog2.o

  $(GCC) $(CFLAGS) prog1.o prog2.o o prog

#上面的Tab键不能用空格代替,标识符写入$()中

prog1.o: prog1.c

  $(GCC) $(CFLAGS) c prog1.c

#用“ : ”表示依赖关系,如果prog1.c更新了,或者没有 prog1.o,此句被执行。

prog2.o: prog2.c

  $(GCC) $(CFLAGS) c prog2.c

 

testall: test0 test1 test2

test0: prog

  ./prog inputs/input0 > outputs/output0

test1: prog

  ./prog inputs/input1 > outputs/output1

 

test2: prog

 

  ./prog inputs/input2 > outputs/output2

#测试用例

 

clean:

  /bin/rm -f *.o prog ourputs/*

#退出前删除计算机生成的文件

#退出

Linux终端下输入

make

  ——–默认Makefile文件会被编译

make test0

  ——–测试用例test0

make test1

  ——-测试用例test1

make clean

  ——–所有的文件都被删除

make -f 文件名

  ——–文件名是Makefile格式的文件会被编译

make clean -f 文件名

  ——–所有文件被删除,执行文件名里面的clean

 

4、使用valgrind检查内存访问错误

valgrind –tool=memcheck –verbose ./prog

 

5、覆盖测试(有可能有的条件不会被执行,测试文件为coverage.c)

 

gcc -g -Wall -Wshadow -fprofile-arcs -ftest-coverage coverage.c -o cov

./cov

  ——–生成coverage.gcda和coverage.gcno两个文件

gcov coverage.c

  ——–出现一下提示

    File ‘coverage.c’
    Lines executed:71.43% of 7
    Creating ‘coverage.c.gcov’

 打开coverage.c.gcov 文件,“###”是从未执行过的代码行

 

赞(0) 打赏
未经允许不得转载:张拓的天空 » GCC编译命令的学习
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏