當我們完成的代碼需要向外展示內容,又不想別人看到自己的源代碼的時候,我們可以通過動態庫,在給出頭文件過後,別人就可以使用這個代碼的時候,無從獲知自己的代碼,從而保證自己的代碼的所有權。
動態庫:代碼編譯生成一個".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的文件