2012-08-02 74 views
0

所以我們有這樣的計劃,正在編制中了OpenSuse 13.1以下配置:在其他的編譯環境編譯

  • GCC 4.6-15.1.3
  • GLIBC 2.14
  • Libcrypto 1.0

然而,它應該具有了OpenSuse 10.3它具有以下配置中運行:

  • GCC 4.2-24
  • GLIBC 2.6.1-18
  • Libcrypto 0.9.8

我能找到到目前爲止唯一的依賴是其在GLIBC 2.7引入了__isoc99_sscanf。我試圖用我自己寫sscanf函數解決這個問題,並通過添加下面一行在我的源代碼替換它: __asm__(".symver __isoc99_sscanf1, [email protected]@GLIBC_2.7");

現在我只剩下libcrypto依賴,它也看起來像它的段錯誤上則munmap( )當我嘗試在舊的OpenSuse環境中運行它(可能是一個GCC的東西?)時(當我跨越程序)功能

所以基本上,我不知道什麼標準程序是固定這種向後兼容性問題。有關於此的任何想法?

+1

爲什麼不簡單地在每個目標上編譯一個二進制文件? – Mat 2012-08-02 07:07:32

+0

這是一種可能性,但我想知道是否有更多的人面臨這個問題,並且可以做些什麼來解決這個問題。 – Evert 2012-08-02 07:09:32

回答

0

通常情況下,您只需在新操作系統上安裝舊的gcc,glibc和其他庫(通常由於這個原因,可以作爲RPM使用),並確保只用這些庫進行編譯。嘗試解決所有後向不兼容問題是一場艱苦的戰鬥。

爲了更加徹底,您可以在較舊的操作系統的chroot中構建,甚至可以將其打包到RPM中,以便自動檢查依賴關係。像Open Build Service這樣的東西很容易。