我找到了一個庫,libjson
,我試圖建立一個共享庫並在一個項目中使用。建築很簡單,固定的Makefile錯誤後,如何重命名共享庫以避免同名衝突?
# SHARED=1 make install
將編譯和/usr/lib
安裝.so
。問題是我的系統(Arch Linux)已經有一個名爲libjson
的庫,Makefile爲我覆蓋了這個庫! Arch的庫被安裝爲依賴項,所以它不能被替換。如果他們有一個名爲libjson
的庫,那麼其他發行版可能會有類似的問題。
我該怎麼辦?我可以重新命名圖書館(libjson-mine
或其他),但動態鏈接離魔法只有幾步之遙,所以我不知道這是否會破壞某些東西。 如何重命名圖書館?
另一種選擇是將庫的源代碼放到我的當前項目的源代碼樹,並有建設者使靜態庫,而不是。 (很顯然,這會讓我的代碼存儲庫變得更加混亂,因此不太合適)。如果我走這條路線,我需要讓鏈接器更喜歡我的libjson.a
,而不是搜索/usr/lib
以獲得「合適」(讀取:錯誤)庫。 如何讓鏈接器更喜歡我的版本?
或者,有沒有第三種選擇,我不知道?
一個更好的想法是用通常的'/ usr/local /'前綴來配置和安裝你的軟件包,這樣你的'libjson'會進入'/ usr/local/LIB/libjson.so';另外,瞭解有關'LD_LIBRARY_PATH'環境變量和'/ etc/ld.so.conf'和'ldconfig'命令的更多信息。 –