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