看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux x86_64, Debian, glibc version 2.13 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) glibc? 問題(Question): 執行程式時找不到函式庫 ./pptoken-ref: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by ./pptoken-ref) 補充說明(Supplement): 如訊息, 我無法執行這個程式, 因為它要求 2.14, 但機器上只有 2.13 請問有沒有辦法修改執行檔騙過它, 讓它使用 2.13 呢? (1) 我只有執行檔, 不可能取得原始碼 (2) 這是工作站的機器, 我沒有 root 權限 (3) 我本機電腦是32位元, 但是這個程式是64位元的, 所以應該不可能用 VM 跑..吧? 希望能有辦法騙過它使用 2.13 版本函式庫 用 readelf -s 讀到的結果如下: (...略...) 92: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSs12_S_empty_repEv@GLIBCXX_3.4 (2) 93: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSsaSERKSs@GLIBCXX_3.4 (2) 94: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.14 (10) 95: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSs6appendERKSs@GLIBCXX_3.4 (2) 96: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSt11logic_errorC1ERKSs@GLIBCXX_3.4 (2) (...略...) 完整訊息 http://ideone.com/yx4lmw 所以好像只有 memcpy 一個函數有用到? 希望板上的前輩能提供一些意見, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.56.191
changyuheng:為什麼 32-bit 的電腦可以裝 64-bit 的 OS? @@" 05/06 02:48
suhorng:拿來跑的OS是工作站的(64-bit), 我沒能在本機跑 05/06 02:57
Slither:have you tried searching for string ``GLIBC_2.14'' 05/06 07:44
Slither:in the elf file? (just a naive guess though) 05/06 07:44
Bencrie:我猜跟 Steam 一樣是給 Ubuntu 用的套裝軟體 05/06 09:05
Bencrie:也許可以參考 Steam for Debian 的做法 05/06 09:06
kdjf: LD_LIBRARY_PATH=./ 不過有一點點安全性風險就是 05/06 10:20
謝謝大家的意見! 單單設 LD_LIBRARY_PATH 跟改 elf 裡的字串沒有效果 好像 libc.so.6 會直接去判版本 等下打算朝幾個方向試 1. 自己編個 glibc 2.14 放到 local 資料夾, 然後就設 LD_LIBRARY_PATH 2. 照搜尋到的 http://stackoverflow.com/questions/14879644/ 這篇 直接試著去改 elf Orz 不過往後還會有其他檔案... ※ 編輯: suhorng 來自: 118.166.56.191 (05/06 22:50) ※ 編輯: suhorng 來自: 118.166.56.191 (05/06 23:09)
Fenikso:為了以後的n個作業 自己編個glibc一勞永逸 05/07 00:47
Bencrie:是說不能在自己 PC 上弄個 VM 來跑嗎 XD 05/07 08:53
AntaresStar:依我的經驗 自己編glibc必定陷入相依性地獄 05/07 23:34
AntaresStar:而就算是要把所有用到的.so全部複製來並設path 05/07 23:35
AntaresStar:光是找齊.so檔這回事就已經是相依性地獄 XD 05/07 23:36
suhorng:後來自己編 glibc 然後它就可用了 05/07 23:49
suhorng:至少我希望以後的東西不會用到其他 library QQ 05/07 23:50
suhorng:我只有跑那個程式才把LD_LIBRARY_PATH打開,希望不會影響.. 05/07 23:50
suhorng:@Bencrie: 還沒試過耶! 結果我的CPU好像有virtualization, 05/07 23:51
suhorng:這樣用 VirtualBox 也許可以用@@ 05/07 23:52