我在這裏搜索這個問題,並找到一些類似的問題,但有解決方案不適合我。這是我的問題: 我的應用程序正在使用openldap-2.3的共享庫進行編譯。 Openldap的/usr/lib/libldap-2.3.so.0鏈接到/usr/lib/libldap-2.3.so.0.2.31。我將-lldap
選項傳遞給gcc,它將libldap-2.3.so.0文件鏈接到我的應用程序。如何鏈接特定名稱(版本)的共享庫
但我想鏈接像libldap.so這樣的特定名稱。 請改正我,將來如果我在開發系統中將openldap版本更改爲2.4,則它將鏈接到libldap-2.4.so.XXX版本。
那麼我怎樣才能將我的應用程序鏈接到特定的名稱,以便它會一直尋找像libldap.so一樣的名稱。
注:我創建/usr/lib/libldap-2.3.so.0的軟鏈接作爲/usr/lib/libldap.so,然後通過庫名/usr/lib/libldap.so
沒有-l
編譯器,然後應用程序編譯成功,而不任何鏈接錯誤,但依然顯示相同的libldap-2.3.so.0。
在未來,如果您更改庫,您可以將鏈接更改爲指向新鏈接,是不是會解決問題? – iabdalkader
只是一個猜測 - 所以沒有可能與一些普通圖書館鏈接。它總是需要與特定版本的庫鏈接。如果您更改系統,則需要重新構建應用程序。另一種可能性不是鏈接到共享庫,而是使「靜態」應用程序 – xhudik
@mux我在gcc中使用「-l」選項,因此它會將我的應用程序鏈接到libldap-2.4.so.0等新庫,但它會詢問在我運行我的應用程序的系統中使用相同的名稱。我想要修復。 – linuxexplore