假設我有:GCC鏈接到一個共享對象的連接器的名稱
/usr/lib/libsomething.so.1
上機A;/usr/lib/libsomething.so.2
機器B.
兩臺機器有/usr/lib/libsomething.so
符號鏈接到各自庫。
如果我鏈接使用gcc
與-lsomething
(甚至/usr/lib/libsomething.so
),它會跟隨符號鏈接,並ldd
機器A生產的是這樣的:
libsomething.so.1 => /usr/lib/libsomething.so.1
這意味着它將無法找到庫在機器B.
現在我知道這些是主要版本號的變化,我知道他們可能不兼容,但我願意冒這個風險。我想告訴鏈接是尋找libsomething.so
,不遵循符號鏈接,以便ldd
將顯示
libsomething.so => /usr/lib/libsomething.so.1
上一個
但
libsomething.so => /usr/lib/libsomething.so.2
上B.
然後裝載機將遵循符號鏈接到任何版本。
此外,我不想延遲加載與dlopen或任何東西。我希望它在編譯時鏈接到共享對象。
這甚至可能嗎?
我沒有建立圖書館的問題,我認爲真正的答案是不做我的建議,如果你真的想作弊,只需使用符號鏈接。這提供了一些很好的信息,所以我接受。 – 2015-01-20 17:45:55