嵌入式系統上兩套不同版本的 glibc

參考:https://stackoverflow.com/questions/847179/multiple-glibc-libraries-on-a-single-host

編譯時利用

g++ main.o -o myapp ... -Wl,--rpath=/tmp/newglibc -Wl,--dynamic-linker=/tmp/newglibc/ld-linux.so.3

產生執行檔。然後將 libc 放到 /tmp/newglibc 底下,類似下圖:


上圖是一個簡單程式相依的 libc。當利用 ldd 查看相依性時,會發現系統會直接至 /tmp/newglibc 底下找。如果程式使用舊的 glibc 執行不起來,使用此種方式可以執行。

這適用在單一 binary 的情況。但是一個 binary 相依 glibc ver 1,其載入的 so 檔相依 glibc ver 2,這就不曉得要怎做?

留言

熱門文章