gcc 生成庫

假設當前目錄下有這些源文件:[main.c    func.c    func.h],其中main.c要調用func.c中的函數。

【1】生成靜態庫:
$ gcc -c func.c -o func.o
$ ar rcs libfunc.a func.o
$ gcc main.c -o main -static -L. -lfunc
$ ./main

【2】生成動態庫:
$ gcc -fPIC -c func.c -o func.o
$ gcc -shared -o libfunc.so.1.0.0 func.o
$ ln -s libfunc.so.1.0.0 libfunc.so
$ gcc main.c -o main -L. -lfunc
$ export LD_LIBRARY_PATH=$(pwd)
$ ./main
如果將so文件copy到系統lib目錄(如/usr/lib),則最後2步就不用了。

最後還有3個小知識:
【1】nm命令:列出目標文件或2進制文件的所有符號。
【2】ldd命令:列出爲了使程序正常運行所需要的所有共享庫。
【3】/etc/ld.so.conf文件:除了標準目錄(/lib和/usr/lib)之外,鏈接器和加載器搜索共享庫時要檢查的其他目錄,和這個文件相關的一個命令是:ldconfig 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章