linux下C语言(一):【基础知识】【gcc编译】【Makefile】【程序库链接】
Posted on 2017-07-27 15:30 sucre_2 阅读(315) 评论(0) 编辑 收藏 举报编译:hello.c
1、使用GCC编译器:
gcc -o hello hello.c
生成名为hello的可执行文件,执行./hello即可执行(-o后面跟生成文件名)
-c 表示只要求编译器输出目标代码,而不必输出可执行文件(生成.o目标文件)
-g 提供GDB调试
2、Makefile的使用:
编译执行多个文件:
gcc -c main.c
gcc -c aaaa.c
gcc -c bbbb.c
gcc -o main main.o aaaa.o bbbb.o
使用Makefile:
# Makefile 文件
main: main.o aaaa.o bbbb.o
gcc -o main main.o aaaa.o bbbb.o
main.o: main.c aaaa.h bbbb.h
gcc -c main.c
aaaa.o: aaaa.c aaaa.h
gcc -c aaaa.c
bbbb.o: bbbb.c bbbb.h
gcc -c bbbb.c
Makefile文件规则:
第一行表示依赖关系,第二行是规则
target:componets(目标:以来对象)
TAB rule(有个TAB键)
Makefile 有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是:
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件
main: main.o aaaa.o bbbb.o
gcc -o $@ $^
main.o: main.c aaaa.h bbbb.h
gcc -c $<
一个 Makefile 的缺省规则
..c.o:
gcc -c $<
这个规则表示所有的 .o 文件都是依赖与相应的.c 文件的.例如 mytool.o 依赖于 mytool.c
这样 Makefile 还可以变为:
# 这是再一次简化后的 Makefile
main: main.o aaaa.o bbbb.o
gcc -o $@ $^
..c.o:
gcc -c $<
3、程序库的链接
为了使用数学函数,我们必须和数学库连接,为此我们要加入 -lm 选项. gcc -o temp temp.c -lm
对于一些常用的函数的实现,gcc编译器会自动去连接一些常用库,这样我们就没有必要自己去指定了.
有时候我们在编译程序的时候还要指定库的路径,这个时候我们要用到编译器的 -L 选项指定路径.比如说我们有一个库在 /home/hoyt/mylib下,这样我们编译的时候还要加上 -L/home/hoyt/mylib.对于一些标准库来说,我们没有必要指出路径.
4、程序的调试
最常用的调试软件是 gdb.在图形界面下调试程序,可以选择 xxgdb.记得要在编译的时候加入 -g 选项.
通过《Linux操作系统下C语言编程入门》(原 文: Hoyt 等,二次制作: AureoLEO)学习整理