我開發了一個C程序,需要一些動態庫,最值得注意的是libmysqlclient.so,我打算在某些遠程主機上運行。看起來好像我有以下分配選項:在linux下發佈一個帶庫依賴的c程序的選項
- 編譯程序靜態。
- 在遠程主機上安裝所需的依賴關係
- 分配程序的依賴關係。
第一個選項是有問題的,因爲我在運行時需要glibc-version
(因爲我現在使用glibc和libnss)。
我不確定第二個選擇:是否有一種機制,檢查安裝的庫版本是否足以讓程序運行(在libxyz.so.VERSION旁邊)。我可以在啓動時檢查ABI兼容性嗎?
關於最後一個選項:我是否將所有共享庫與二進制文件分發,或者只是可能未安裝的共享庫(例如libmysqlclient,而不是libm)。
除了這個,我可能會遇到ABI兼容性問題,如果我使用一個不同的二進制編譯器,然後依賴建立與(例如二進制clang,庫gcc)?
構建指定正確依賴關係的包('.deb','.rpm'),因此包管理器將自動安裝它們。 –