2014-06-08 133 views
0

我在Linux上使用二進制格式分發的共享C庫。問題在於依賴關係被設置爲需要開發機器上可用的版本。例如,每個版本都需要(當時)最新的glibc,並且只需要在其系統上使用libreadline的精確版本。避免太具體的依賴關係

我已經聯繫了開發人員,他們不知道該怎麼做。據我所知,他們並沒有有意識地使用最新的功能,所以圖書館應該繼續使用較老的依賴關係。我認爲他們在Linux上使用gcc,但他們也使用複雜的make系統來控制其他編譯器爲Windows和Unix構建。

如何以及在多大程度上可以管理構建過程,以便庫需要僅具有足夠版本的依賴關係,並且還會接受更高版本?

This是一個相關的問題。

編輯:爲了清楚起見,我想知道如何構建程序,以便他們將接受具有特定版本號或更高版本號的依賴項。無論開發人員是編譯它還是我這樣做,我都希望能夠分發一個二進制文件,該文件不需要構建環境中存在的相關性版本。

編輯2:改寫問題後,我意識到這已被覆蓋很多次。一些最佳Q & A的:

Deploying Yesod to Heroku, can't build statically

Compile with older libc

Linking against an old version of libc

How can I link to a specific glibc version?

+0

這尤其值得一提的是我更喜歡使用免費的開源軟件。您依賴於製作人爲您的系統構建軟件的良好意願。 –

+0

它們是rpm/apt「依賴關係」還是調用libreadline本身的庫代碼? – Rob11311

+0

@Basile:哎呀,對不起,暗示該來源不可用。儘管如此,圖書館非常龐大而且很難建造。 – user3720403

回答

1

這不是很信心,鼓舞人心。他們應該建立在一個穩定的基線版本上,它可能只是一個虛擬安裝。某些版本的Linux,複製一個構建環境,以便包不鏈接到更新的庫版本。

openSUSE的建設服務,讓devolopers建立二進制包,爲各種http://openbuildservice.org/about/

IIRC的readline的是GPL的程序,並在http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html#Availability檢查表明,它是GPL 3節,使他們可能違反了GPL ,如果他們正在使用libreadline函數並且應該爲您的庫提供源代碼。我不確定你是否意味着rpm/apt軟件包依賴,或者他們的庫實際上調用libreadline。

如果需要,您可以隨時從rpm或apt軟件包中提取文件,以避免軟件管理器問題,由於打包不良。

+0

您的主要觀點有點遺憾,基本解決方案只是建立在您想要支持的最舊系統上,並依賴於與較新庫版本的兼容性。 – user3720403

相關問題