2
假設我在Linux發行版X上編譯了共享庫和二進制文件X ver。 它可以在同一發行版N + 1上工作嗎?同一個Linux發行版的不同版本之間的二進制和共享庫兼容性
什麼是一般規則來確定這一點? (如GCC/glibc的版本,也許它的具體分佈,LSB等)
假設我在Linux發行版X上編譯了共享庫和二進制文件X ver。 它可以在同一發行版N + 1上工作嗎?同一個Linux發行版的不同版本之間的二進制和共享庫兼容性
什麼是一般規則來確定這一點? (如GCC/glibc的版本,也許它的具體分佈,LSB等)
首先,檢查你的二進制文件和庫的外部依賴:
ldd yourlib.so a.out ...
樣本輸出
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f7906ee6000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7906b29000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f790690b000)
而且然後檢查N + 1中是否需要的庫沒有發生重大變化:確定擁有這些庫的軟件包(rpm -qf file
或dpkg -S file
),並比較upstream-tracker中找到的軟件包版本(N和N + 1)。
最後,檢查gcc版本是否沒有顯着改變(從2.x到3.y或從3.x到4.y)。
此外,如果工具支持,則可以嘗試在所有的二進制文件上使用Linux Application Checker與N + 1版本的發行版。