C 语言看的差不多了,Linux编程从哪里入手呢?
首先我们要了解一些基本的知识,比如库文件,shell编程。
静态库文件:*.a
缺点:同一时间运行多个程序而它们又来自同一个函数库里的函数时,内存中就会存在同一函数的多份
拷贝,在程序文本中也存在多份拷贝,浪费内存和硬盘
创建一个自己的静态库文件:
1).函数bill.c
/* code */
#include <stdio.h>
void bill(char * arg)
{
printf("bill: you passed %s/n",arg);
}
/* code */
编译:$ gcc -c bill.c 生成bill.o文件
2).为函数建立头文件lib.h
/* code */
void bill(char *)
/* code */
3).写个程序program.c调用刚才的函数:
/* code */
#include "lib.h"
int main()
{
bill("hello world");
exit(0);
}
/* code */
编译: $ gcc -c program.c
$ gcc -o program program.c bill.o
$ ./program
4).用ar程序建立一个档案:
$ ar crv libfoo.a bill.o
为函数库建立一个内容表(在Berkley Unix中,在linux中并不必要):
$ ranlib libfoo.a
现在我们就可以用函数库了:
$ gcc -o program program.c libfoo.a
也可以通过-L来告诉编译器哪里能够找到它:
$ gcc -o program program.c -L. -lfoo
-L 告诉编译器在当前目录下查找函数库
共享库文件:*.so,*.sa
它本身不包含函数的代码,而只保存共享代码的调用线索,共享代码在该程序运行的时候才加入到
其中。当编译好的程序被加载到内存中准备执行的时候,函数的调用线索被解析,程序校共享库发出
调用,共享库只在必要的时候才被加载到内存中。在内存中只保留一份共享库拷贝供许多程序使用。
查看程序调用了哪些共享库:
$ ldd 可执行程序名
shell编程我就不多介绍了,但它是基础中的基础,必要掌握。我觉得能看懂shell脚本就可以了。
首先我们要了解一些基本的知识,比如库文件,shell编程。
静态库文件:*.a
缺点:同一时间运行多个程序而它们又来自同一个函数库里的函数时,内存中就会存在同一函数的多份
拷贝,在程序文本中也存在多份拷贝,浪费内存和硬盘
创建一个自己的静态库文件:
1).函数bill.c
/* code */
#include <stdio.h>
void bill(char * arg)
{
printf("bill: you passed %s/n",arg);
}
/* code */
编译:$ gcc -c bill.c 生成bill.o文件
2).为函数建立头文件lib.h
/* code */
void bill(char *)
/* code */
3).写个程序program.c调用刚才的函数:
/* code */
#include "lib.h"
int main()
{
bill("hello world");
exit(0);
}
/* code */
编译: $ gcc -c program.c
$ gcc -o program program.c bill.o
$ ./program
4).用ar程序建立一个档案:
$ ar crv libfoo.a bill.o
为函数库建立一个内容表(在Berkley Unix中,在linux中并不必要):
$ ranlib libfoo.a
现在我们就可以用函数库了:
$ gcc -o program program.c libfoo.a
也可以通过-L来告诉编译器哪里能够找到它:
$ gcc -o program program.c -L. -lfoo
-L 告诉编译器在当前目录下查找函数库
共享库文件:*.so,*.sa
它本身不包含函数的代码,而只保存共享代码的调用线索,共享代码在该程序运行的时候才加入到
其中。当编译好的程序被加载到内存中准备执行的时候,函数的调用线索被解析,程序校共享库发出
调用,共享库只在必要的时候才被加载到内存中。在内存中只保留一份共享库拷贝供许多程序使用。
查看程序调用了哪些共享库:
$ ldd 可执行程序名
shell编程我就不多介绍了,但它是基础中的基础,必要掌握。我觉得能看懂shell脚本就可以了。