Linux程序设计:入门

这一章主要讲了一些Linux的历史,编程需要的工具还有,静态库和共享库。

个人觉得这章可以归纳为一下几点:

1.文本编辑器;vim(这是现阶段大多数自带的很强大的文本编辑器)

vim test.c(创建一个test.c的文件)

gcc  -o test test.c(将test.c生成为 test可执行文件)

注意:如果我们没有 指定生成文件的名字将自动命名为a.out(assemler output的意思)。

如果我们编译时需要用到非标准的头文件(通常是/user/include)或者是标准目录的子目录中的,应该用 -I来包含头文件。

2.接下来是关于静态库(.a)和共享库(.so)。

库文件,就是一些已经编译好的按照可重用的原则编写的函数集合,后面我们会学到的(curses和dbm就是一个很好的例子

在编译时使用库函数有以下几种方式:

①:gcc  -o test test.c /usr/lib/libm.a

②: gcc -o test test,c -lm(libm.a的缩写,liba就写成-la以此类推)

以上两种是库文件在标准目录下才会用的。

③:gcc -o test  -L/usr/openwin/lib  test.c -lx11

-L后接库文件所在的目录



关于静态库的生成,看一下例子就可以理解了:

首先我们定义两个基本的源文件:coutnum.c,coutchar.c

gcc -c coutnum.c coutchar.c

将生成两个文件(coutnum.o和coutchar.o)

其中的-c是告诉编译器不要生成真正的可执行程序因为我们现在还没有main函数

.o是一种包含在库文件的目标文件


vim lib.h(生成一个头文件用来声明库中所定义的函数,如果要使用库中的函数就必须包含这个头文件)

 

然后我们用:

ar crv  libfoo,a coutchar.o coutnum.o

使用ar命令来创建.a文件这里 crv 的意义大家可以自己查询关于ar这个命令的资料

另外有些系统我们必须在创建一个库文件之后生成一个内容表

ranlib libfoo,a



静态库有一个缺点:当同时运行多个程序,而这些程序又使用库的同一函数时,就会在内存存在很多副本,这将会浪费大量的内存和磁盘空间所以用到了共享库(.so)

同时共享库的另一个优点:使得共享库能独立于应用程序的更新(共享库的格式:.so.N其中N代表着他的版本)

关于创建共享库的过程:

http://blog.csdn.net/mindview/article/details/2045096

可以看看这个,有了静态库的讲解,这个应该不难

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值