日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

链接详解--共享库命名

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链接详解--共享库命名 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

按照共享庫的命名慣例,每個共享庫有三個文件名:real name,soname和linker name。

?

soname是一個符號鏈接的名字,只包含共享庫的主版本號,主版本號一致即可保證庫函數(shù)的接口一致,

因此應(yīng)用程序的.dynamic段只記錄共享庫的soname,只要soname一致,這個共享庫就可以用。

使用共享庫可以很方便地升級庫文件而不需要重新編譯應(yīng)用程序,這是靜態(tài)庫沒有的優(yōu)點。

注:libc的版本號有一點特殊,libc-2.8.90.so的主版本號是6而不是2或2.8。

?

linker name僅在編譯鏈接時使用,gcc的-L選項應(yīng)該制定linker name所在的目錄。

有的linker name是庫文件的一個符號鏈接,有的是一段鏈接腳本(libc.so)。

?

示例:

real name:/lib/i386-linux-gun/libc-2.15.so

softname: /lib/i386-linux-gun/libc.so.6

linker name: /usr/lib/i386-linux-gun/libc.so

?

gcc -shared -Wl,soname,libstack.so.1 -o libstack.so.1.0 stack.o push.o pop.o is_empty.o

這樣編譯生成的庫文件是libstack.so.1.0,是real name,soname是libstack.so.1。

需要首先創(chuàng)建linker name:

ln -s libstack.so.1.0 libstack.so

程序編譯需要linker name,程序執(zhí)行需要soname,最終指向real name。

轉(zhuǎn)載于:https://www.cnblogs.com/embedded-linux/p/4880966.html

總結(jié)

以上是生活随笔為你收集整理的链接详解--共享库命名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。