久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

動(dòng)態(tài)庫的GLIBC版本兼容問題

 guitarhua 2016-09-19
需要將一個(gè)jabber的客戶端porting到Atom的單板上,遇到的問題如下:

  1. /lib/libc.so.6: version `GLIBC_2.15' not found (required by ./libevent_core-2.0.so.5)
初略分析: libevent_***.so.5是在虛擬機(jī)ubuntu12.04上編譯的,,所以glibc的版本比較高,,Atom的Image中g(shù)libc的版本比較低,;
Google了一圈下來,大致有如下幾種解決方法:
1.采用低版本的Glibc重新編譯一下代碼,;(嘗試著在本地多裝一個(gè)Glibc版本,,未能成功,有機(jī)會(huì)可以再try一下,;另外裝了個(gè)fedora12,,該版本的Glibc版本與Atom板上接近,但是由于項(xiàng)目還依賴于一些高版本的軟件,,所以只得放棄)
2.采用全靜態(tài)方案編譯,;(網(wǎng)上不少人推崇這種方法,感覺比較坑爹,,項(xiàng)目畢竟不是helloworld,,不太好全靜態(tài)編譯,改了一天的Makefile,,最終以部分底層so,,需要挨個(gè)下源文件編譯而放棄)
3.指定Glibc的版本;

那么主要來介紹一下第三種方法,,步驟如下:

1.查看一下具體libevent_****.so.5,,是哪些部分調(diào)用到了GLIBC_2.15的libc.so.6

  1. objdump -x libevent_****.so |grep 2.15
  2. 0x06969195 0x00 06 GLIBC_2.15
  3. 00000000 F *UND* 00000000 __fdelt_chk@@GLIBC_2.15

通過objdump命令(由于是Atom,所以不需要交叉編譯,,如果是交叉編譯,,請注意選用相應(yīng)的編譯器的objdump),可以看出只調(diào)用了一個(gè)函數(shù)__fdel_chk,,這時(shí)去代碼里搜,,發(fā)現(xiàn)沒有該符號;

2.通過反匯編,查找相關(guān)的函數(shù)調(diào)用 

  1. objdump -dS libevent_****.so >dump.txt

去dump.txt中搜索剛才的符號,,可以看到 

  1. if (FD_ISSET(i, sop->event_writeset_out))
  2. 1e886: 89 44 24 3c mov %eax,0x3c(%esp)
  3. 1e88a: e8 d1 6c fe ff call 5560 __fdelt_chk@plt

其實(shí)__fdelt_chk,,是FD_ISSET調(diào)用的,由于FD_ISSET是宏,,所以之前搜索不到__fdelt_chk.

3.查看Atom單板的GLIBC版本信息 

  1. /lib/libc.so.6

  2. GNU C Library development release version 2.11.90, by Roland McGrath et al.
  3. Copyright (C) 2009 Free Software Foundation, Inc.
  4. This is free software; see the sourcefor copying conditions.
  5. There is NO warranty;not even for MERCHANTABILITYor FITNESS FOR A
  6. PARTICULAR PURPOSE.
  7. Compiled by GNU CC version 4.5.1.
  8. Compiled on a Linux >>2.6.27.41-170.2.117.fc10.i686<< system on 2012-04-17.
  9. Available extensions:
  10.         crypt add-on version 2.1 by Michael Gladand others
  11.         Native POSIX Threads Library by Ulrich Drepper et al
  12.         BIND-8.2.3-T5B
  13. For bug reporting instructions, please see:
  14. <http://www.gnu.org/software/libc/bugs.html>

4.在調(diào)用了FD_ISSET的C代碼中,,指定相應(yīng)的符號鏈接Atom單板的GLIBC版本的符號表 

  1. __asm__('.symver __fdelt_chk,__fdelt_chk@GLIBC_2.11')

5.重新編譯代碼,代碼可以成功運(yùn)行在Atom單板和PC上.

轉(zhuǎn)載請保留地址:http://blog./uid-13909379-id-3432236.html

參考鏈接:

http://www./blog/?p=103

==================================================

#include #include #include  __asm__('.symver realpath,realpath@GLIBC_2.2.5');int main(){ char* unresolved = '/lib64'; char resolved[PATH_MAX+1];  if(!realpath(unresolved, resolved)) { return 1; }  printf('%s\n', resolved);  return 0;}

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多