動態庫和靜態庫

      當我們完成的代碼需要向外展示內容,又不想別人看到自己的源代碼的時候,我們可以通過動態庫,在給出頭文件過後,別人就可以使用這個代碼的時候,無從獲知自己的代碼,從而保證自己的代碼的所有權。

       動態庫:代碼編譯生成一個".so"的文件,當需要執行的時候,系統把這個".so"文件加載到內存中去,從而我們可以節省硬盤空間,庫放在/lib,/usr/lib下,頭文件放在/usr/include下。

       靜態庫:靜態庫在linux下名爲libxx.a,靜態函數庫編譯成的文件比較大,因爲整個函數庫的所有數據都被整合進目標代碼中,靜態鏈接的程序不用動態庫就可以直接執行,而動態鏈接的必須要動態庫才能執行。

       當我們編寫完成代碼過後,我們通過"gcc *.c -static"來靜態編譯,然後我們可以看到生成的可執行文件a.out的大小比我們不通過靜態編譯生成的文件的大小要大很多。

       靜態庫的製作:

       gcc -c  *.c   當我們需要通過gcc 把.c的文件編譯生成.o的文件,過後ar -rcs 把所有的.o文件打包生成一個libxx.a的文件。當別人需要用到自己的代碼時,我們就可以給他這個靜態庫的文件,且他還不知道我們的源代碼。

        動態庫的製作:

     gcc -shared -fpic -o  我們把*.c的文件打包生成一個libxx.so的文件

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章