<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 12, comments - 3, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    近日心血來潮,決定裝了個Ubuntu 9.10 live cd做編程開發。沒想到wbui.exe也不是什么方便的東西,如果在安裝之前你不幸選擇了簡體中文~~~~呵呵,不好意思,慢慢等吧,它會慢悠悠地連接到國外,為你用心良苦的下載中文依賴包(如果你家早已光纖入屋,那恭喜,你是不會有這個麻煩的)。沒有一個晚上,絕對搞不定~~
    建議:
    1、安裝英文版。裝好了系統再上網下載,至少你能看到界面,可以做做簡單操作~心里踏實。
    2、苦心下載一個4.5g dvd版的ubuntu。中文正常的很,不過好像裝好后是繁體,還是要上網下載簡體中文包(如果你不介意繁體,那算是解決問題)
    3、如果很不幸掉進了簡體中文,不要害怕,在它下載安裝包的過程中,按下crtl+alt+F2,調到其他工作界面,常用字符節目的應該都很熟悉,然后用ps aux查看那里是apt-get的程序進程,找到pid,把它kill掉就ok了。它就會進入后續安裝,馬上就要有系統界面了!!有了節目,大家都有種感覺,踏實了,linux平安到布~~~


    近期鬧得火紅的小日本B+數據庫tokyocabinet(以下簡稱tc),性能確實不容置疑,但是安裝卻老是出問題,問題都出自于一大堆的依賴錯誤。要搞定確實折騰!主要問題是tc要依賴bzip2,還有libbz2這個linux常規壓縮工具。說是常規,但是ubuntu,opensuse常規是不會安裝的。搞不懂,哪來常規。
    也許常規是對Radhat而言的,我用5.3企業版的radhat不會出現這種麻煩事。
    因為工具太常規所以一般人不會注意問題所在,更有看過,網上認為這是tokyocabinet一個bug。

    言歸正傳,說說具體問題吧。
    問題:
    1、tc make file時候,當碰到依賴libbz2.a或者libz.a這兩個庫的時候會出現編譯錯誤。
    諸如:
     缺少zlib.h這個文件
    //******************************************************************************************************************************//
    /usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libbz2.a: could not read symbols: Bad value
    collect2: ld 返回 1
    make: *** [libtokyocabinet.so.8.22.0] 錯誤 1
    //******************************************************************************************************************************//
    /usr/bin/ld: /usr/local/lib/libz.a(crc32.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libz.a: could not read symbols: Bad value
    make: *** [libtokyocabinet.so.8.22.0] 錯誤 1
    //******************************************************************************************************************************//

    凡是這兩個問題,很重要一個原因是bzip的開發依賴包沒有裝好,或者沒裝。
    首先要下載這兩個安裝包
    1、bzip2-1.0.4.tar.gz
    2、zlib-1.2.3.tar.gz

    我上網找過很多解決方法。但是問題依舊,依然編譯不過去。
    即使用了ubuntu的apt-get install libbz2-dev。。。
    網上一般都是修改bzip源碼包的Makefile文件。(裝個小東西,知識一定要豐富!)

    網上的解決方法:
    在gcc編譯參數中加入-fPIC(對于該參數,我在備注中有解釋,適合菜鳥級c語言用戶理解)
    但是問題,有時后就只刁難你,還是不怎么奏效。

    我總結了一下方法:
    1、注意順序問題:(這三個東西一環扣一環,真麻煩)
    如果發現 libbz2.a: could not read symbols: Bad value
    就應該把/usr/local/lib中的libbz2.a刪掉
    進入解壓縮的zlib-1.2.3目錄,用make clean命令清理一下。
    同樣,/usr/local/lib/libz.a: could not read symbols
    操作同上,刪掉libz.a,把bzip2-1.0.4目錄的編譯文件清理一下。
    如果找不到這兩個文件的位置,可以在終端敲上:
    find -name libbz2.a
    ....

    2.修改zlib-1.2.3的Makefile文件
    把gcc的編譯參數加上 -fPIC
    原文:CFLAGS=-O3 -DUSE_MMAP
    修改為:CFLAGS=-O3 -DUSE_MMAP -fPIC
    如果還是過不去,勸你硬來CC=gcc 直接后面跟上-fPIC讓他們全部獨立編譯
    重申:如果你之前編譯過了,一定要用make clean清掉,否則還是徒勞。。
    最后make 還有 make install

    3.修改bzip2-1.0.4的Makefile文件
    CC=gcc -fPIC  《===這個就是我發飆的結果,全部讓他 -fPIC
    AR=ar
    RANLIB=ranlib
    LDFLAGS=

    BIGFILES=-D_FILE_OFFSET_BITS=64
    CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES)  《===當然這里也可以加上

    同樣,bzip2有一個Makefile-libbz2_so的文件,編譯時會調用,當然你也可以單個編譯:
    make -f Makefile-libbz2_so
    make clean <------------保守建議,還是clean一下
    make
    make install


    具體bzip2的安裝方法可以參照:
    http://lamp.linux.gov.cn/Linux/LFS-6.2/chapter06/bzip2.html

    最后重新安裝tc
    我用的是最新版本:tokyocabinet-1.4.31.tar.gz
    估計應該修復了一些bug。
    make clean
    make
    當輸出:
    #================================================================
    # Ready to install.
    #================================================================
    一切ok,裝吧 make install

    測試下tc
    /web/ttserver# tchmgr create test.tch
    /web/ttserver# ls
    test.tch
    /web/ttserver# tchmgr put test.tch 1 test1
    /web/ttserver# tchmgr put test.tch 2 test2
    /web/ttserver# tchmgr get test.tch 2
    test2

    測試成功!
    (opensuse用戶,不能安裝tokyocabinet的,也可以按照此方法修改Makefile文件)


    備注:
    fPIC參數解釋:
    -fpic
    原文:Position independant code, needed for shared libraries.
    我的理解:獨立編譯代碼,需要共享苦支持(菜鳥級譯法)
    -fPIC
    Position independant code, needed for shared libraries.
    I am a bit in the dark what exactly the difference between -fpic and -fPIC is. It seems that -fPIC works always while -fpic produces smaller object files.
    我的理解:這兩個參數的不同在于,下面這個是總會執行,上面小寫的只提供更小的對象文件編譯。

     

    (摘自:163博客,http://liuziheng5726.blog.163.com ,我的舊博客~~)


    文章來源:http://henry2009.javaeye.com/blog/462705(javaeye舊博客)

    評論

    # re: libbz2.a,libz.so導致tokyocabinet make失敗問題解決方法  回復  更多評論   

    2014-08-09 01:43 by 閆興茂
    我是php編譯失敗的時候遇到的問題,終于找到了,找了好幾天,謝謝博主

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中文在线免费看视频| 国产精品日本亚洲777| 久久精品中文字幕免费| 亚洲精品中文字幕无码蜜桃| 手机永久免费的AV在线电影网| 四虎影视永久免费观看地址| 久久亚洲精品无码gv| 吃奶摸下高潮60分钟免费视频| 精品国产亚洲AV麻豆| 亚洲国产精品成人| a级片在线免费看| 亚洲av无码一区二区三区不卡| 午夜免费福利片观看| 亚洲国产精品张柏芝在线观看| 成人午夜免费福利| 日韩免费码中文在线观看| 国产亚洲精久久久久久无码77777| 中文字幕免费观看视频| 亚洲精品电影天堂网| 国产成人免费高清激情视频| 另类图片亚洲校园小说区| 亚洲精品99久久久久中文字幕| 成人性生交大片免费看中文| 亚洲视频2020| 四虎www免费人成| 国产精品美女久久久免费| 91嫩草私人成人亚洲影院| 成人免费在线观看网站| 乱人伦中文视频在线观看免费| 九月丁香婷婷亚洲综合色| 免费看成人AA片无码视频羞羞网| 狼人大香伊蕉国产WWW亚洲| 亚洲一区二区高清| 国拍在线精品视频免费观看 | 三级黄色在线免费观看| 亚洲国产精品第一区二区| 嫩草视频在线免费观看| 久久九九久精品国产免费直播| 亚洲成人午夜电影| 亚洲女同成人AⅤ人片在线观看| 222www在线观看免费|