Linux编程学习二

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脚本就可以了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章