Linux下動態庫和靜態庫的生成命令


區別
1、靜態庫在編譯的時候被加載,動態庫在執行的之后被加載
2、加載靜態庫編譯所生成的可執行文件比使用動態庫的方式要大
3、靜態庫以.a為后綴,動態庫以.so為后綴

 

 

靜態庫的制作:(以main.c調用add()函數為例)
1.通過gcc -c add.c 生成目標文件 =》add.o
2.通過ar crs -o libadd.a add.o 生成靜態庫 =》libadd.a
3.通過gcc main.c -L. -ladd 鏈接靜態庫編譯,生成可執行文件a.out
4.執行a.out即可
 

 

動態庫的制作
1.通過gcc -c add.c 生成目標文件 =》add.o
2.通過gcc -fPIC -shared -o libmyadd.so add.o 生成動態庫文件 =》libmyadd.so
3.通過gcc main.c -L. -lmyadd 生成可執行文件 =》a.out
4,此時,運行找不到庫文件,我們可以
 (1)將libmyadd.so放到/usr/lib或/lib目錄下
 (2)通過export LD_LIBRARY_PATH=/home/linux/ych/lib 將庫所在的絕對路徑添加至環境變量中(通過echo $LD_LIBRARY_PATH查看此環境變量的值;通過unset LD_LIBRARY_PATH來刪除此環境變量里的值)
 (3)在/etc/ld.so.conf.d/下新建一個sudo vi my.conf文件,在里面寫入庫所在的絕對路徑,保存並執行sudo ldconfig執行配置文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM