2012-06-13 30 views
1

這個問題可能看起來非常明顯,我意識到我正在爲大量的downvotes投入自己的力量,但我對Linux開發非常陌生,並且一直在努力。構建在內核版本X.XX上的C++ Linux應用程序是否會在早期版本上運行?

我一直在C++上編寫Ubuntu 12.04(內核3.2.0)的應用程序,然後通過scp將其複製到另一臺設備上的ubuntu 8.04(kernel 2.6.30)安裝。我一直注意到一些非常奇怪的行爲,我無法解釋。我天真地認爲我可以在以前的版本上運行這個可執行文件,但是我已經開始意識到這實際上可能並非如此。將來,我必須確保我構建應用程序的Linux版本與現場運行的Linux版本相同?或者我是否真的必須直接在它將運行的設備上從源代碼構建應用程序?我對Linux開發非常陌生,但對C++並不陌生,所以我意識到這個問題看起來很容易,但這是我在書籍/教程中根本沒有看到的那種問題。

+0

好吧,**大部分時間**,內核向後兼容*幾年後*。你使用的是什麼類型的功能?你的應用做什麼? –

+0

TCP套接字,串口通信,也將在某些時候使用CANBUS。基本上用於硬件控制的命令行應用我已經被派去這樣做了,基本上已經被拋進了深處並掙扎了一點點 – mathematician1975

回答

3

大多數情況下,它不是阻止你的內核,它是glibc。

glibc是向後兼容的,這意味着編譯和鏈接到舊版本的程序將在運行時與新版本完全相同。另一種方式是不兼容的。

最好的當然是要建立在你要運行它的發行。如果你不能這樣做,建立一個最老的glibc安裝。

它也很難超過系統的glibc建立並鏈接到一箇舊的glibc,安裝/建築glibc的趨向弄亂你的系統更比它的價值。使用舊版Linux設置虛擬機,然後使用它。

相關問題