Linux下C语言基础知识

1:源程序的编译
gcc -o hello  hello.c
 gcc表示我们使用gcc来编译我们的源程序,-o选项表示我们要求编译器给我们输出的可执行文件名为hello

 -o选项表示我们要求输出的可执行文件名。-c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件。-g选项表示

我们要求编译器在编译的时候提供我们以后对程序进行调试的信息。(具体情况参照gcc帮组文档)
2:Makefile的编写
eg.Makefile
#这是一个程序的Makefile文件
main: main.o mytool1.o mytool2.o
 gcc -o main main.o mytool1.o mytool2.o
main.o main.c mytool1.h mytoo2.h
gcc -c main.c
mytool1.o: mytool1.c mytool1.h
gcc -c mytool1.c
mytool2.o: mytool2.c mytool2.h
gcc -c mytool2.c

Makefile的编写方法:
 #开始的行是注释行,Makefile中最重要的描述文件的依赖关系的说明,一般的格式是:

target components
TAB rule
 第一行表示的是依赖关系,第二行是规则。
main: main.o mytool1.o mytool2.o 表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o
 当依赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令,就像我们的上面Makefile所说的要
执行gcc -o main main.o mytool1.o mytool2.o
 注意规则一行中的TAB表示那里是一个TAB键
Makefile有三个非常有用的变量,分别是$@, $^, $< 代表的意义分别是:
 $@--目标文件, $^--所有的依赖文件, $<--第一个依赖文件

如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为
#这是简化后的Makefile
main: main.o mytool1.o mytool2.o
 gcc -o $@ $^
main.o main.c mytool1.h mytoo2.h
gcc -c $<
mytool1.o: mytool1.c mytool1.h
gcc -c $<
mytool2.o: mytool2.c mytool2.h
gcc -c $<

 一个Makefile的缺省规则
..c.o:
gcc -c $<
这个规则表示所有的.o文件都是依赖于相应的.c文件的。例如mytool.o依赖于mytool.c
这样Makefile还可以变为:
#这是再一次简化后的Makefile
main: main.o mytool1.o mytool2.o
 gcc -o $@ $^
main.o main.c mytool1.h mytoo2.h
gcc -c $<
..c.o:
gcc -c $<
3:程序库的链接
程序中包括其他头文件如<math.h>
在Linux下,为了使用数学函数,我们必须和数学库链接,为此我们要加入-lm选项。gcc -o temp temp.c -lm
这样才能正确的编译。
gcc编译器会子总去链接一些常用库,如<stdio.h>
有时候我们在编译程序的时候还要指定库德路径,这个时候我们要用的编译器的-L选项指定路径。比如说我们有一个库在
/home/lcl/mylib下,这样我们编译的时候还要加上-L/home/lcl/mylib。对于一些标准库来说,我们没有必要指出路径,只要它们在缺省

的库德路径下就可以了。系统的缺省库德路径/lib/ usr/lib  /usr/local/lib在这三个路径下面的库,我们可以不指定路径。
4:程序的调试
最常用的调试软件是gdb,如果想在图形界面下调试程序,那么可以选择xxgdb。记得要在编译的时候加入-g 选型,可以查看gdb的帮组文

件。
现在IDE环境里面已经自带了调试器了。
5:头文件和系统求组
man function 系统就会输出该函数的详细解释和这个函数所在的头文件<stdio.h>
man 2 function 2表示我们用的是function这个函数是系统调用函数,
我们常用的是3表示函数是C的库函数。
(man是我们的最好助手)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值