linux so庫生成(一)
來源:程序員人生 發布時間:2015-02-04 09:11:43 閱讀次數:5423次
Dear!
先貼個大眾版,希望逐字理解,有益!
$gcc -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.0 hello.o
另外再建立兩個符號連接:
$ln -s libhello.so.1.0 libhello.so.1
$ln -s libhello.so.1 libhello.so
這樣1個libhello的動態連接庫就生成了。最重要的是傳gcc -shared 參數使其生成是動態庫而不是普通履行程序。 -Wl 表示后面的參數也就是-soname,libhello.so.1直接傳給連接器ld進行處理。實際上,每個庫都有1個soname,當連接器發現它正在查找的程序庫中有這樣1個名稱,連接器便會將soname嵌入連結中的2進制文件內,而不是它正在運行的實際文件名,在程序履行期間,程序會查找具有
soname名字的文件,而不是庫的文件名,換句話說,soname是庫的辨別標志。 這樣做的目的主要是允許系統中多個版本的庫文件共存,習慣上在命名庫文件的時候通常與soname相同 libxxxx.so.major.minor 其中,xxxx是庫的名字,major是主版本號,minor 是次版本號
Do you understand?
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈