青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

戰(zhàn)魂小筑

討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開(kāi)源項(xiàng)目:https://github.com/davyxu

   :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評(píng)論 :: 0 Trackbacks

最近頁(yè)游開(kāi)放平臺(tái)比較多, 每個(gè)平臺(tái)要求的Linux版本各不相同, 這給開(kāi)發(fā)人員部署服務(wù)器帶來(lái)了很大的困難. 在本機(jī)Linux編譯的程序,發(fā)布時(shí)即便將依賴的so附帶到目標(biāo)Linux環(huán)境,仍然會(huì)碰到依賴及版本問(wèn)題,例如:

[root@localhost bin]# ldd wkcenter
./wkcenter: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./wkcenter)
./wkcenter: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./wkcenter)
./wkcenter: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./wkcenter)
./wkcenter: /lib/libc.so.6: version `GLIBC_2.9' not found (required by ./wkcenter)
./wkcenter: /lib/libc.so.6: version `GLIBC_2.7' not found (required by ./wkcenter)
./wkcenter: /lib/libc.so.6: version `GLIBC_2.8' not found (required by ./wkcenter)
./wkcenter: /lib/libc.so.6: version `GLIBC_2.11' not found (required by ./wkcenter)

        linux-gate.so.1 =>  (0xffffe000)
        liblog4cpp.so.4 => not found
        libprotobuf.so.7 => not found
        libboost_filesystem.so.1.48.0 => not found
        libboost_system.so.1.48.0 => not found
        libboost_thread.so.1.48.0 => not found
        libboost_program_options.so.1.48.0 => not found
        libunwind-x86.so.7 => not found
        libluabind.so.0.9.0 => not found
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x008ae000)
        libm.so.6 => /lib/libm.so.6 (0x0044b000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00476000)
        libc.so.6 => /lib/libc.so.6 (0x002c1000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x0041d000)
        librt.so.1 => /lib/librt.so.1 (0x00440000)
        /lib/ld-linux.so.2 (0x002a2000)

上面紅字部分表示glibc及glibcxx庫(kù)依賴不正確. 本人使用的Linux編譯版本為Mint 11(基于Ubuntu), 一般Ubuntu發(fā)行版的glibc配備非常高. 但是上文中的發(fā)布的Linux版本為CentOS 5.8

使用/lib/libc.so.6 查看libc版本為2.5, 遠(yuǎn)遠(yuǎn)低于開(kāi)發(fā)環(huán)境的2.11

GNU C Library stable release version 2.5, by Roland McGrath et al.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.2 20080704 (Red Hat 4.1.2-51).
Compiled on a Linux 2.6.9 system on 2012-02-21.
Available extensions:
        The C stubs add-on version 2.1.2.
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        GNU libio by Per Bothner
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
        RT using linux kernel aio
Thread-local storage support included.
For bug reporting instructions, please see:
<
http://www.gnu.org/software/libc/bugs.html>.

由于Linux操作系統(tǒng)的特有elf加載順序. (可以參考此文). 雖然可以很大程度上解決Windows早期版本的dll hell問(wèn)題, 但是給部署帶來(lái)了很大難度

一般常見(jiàn)的解決方法是, 找到一個(gè)與目標(biāo)Linux版本及glibc版本一致的Linux, 將代碼及依賴包放在之上編譯, 完成后再發(fā)布.這種方法與Linux下常見(jiàn)軟件安裝方法類似. 但是對(duì)于商用服務(wù)器部署步驟來(lái)說(shuō)未免繁瑣, 安全性低.

還有一種方法,使用靜態(tài)鏈接. 將所有可執(zhí)行文件文件依賴的靜態(tài)庫(kù), 系統(tǒng)庫(kù),全部靜態(tài)鏈接到可執(zhí)行文件中,可以一次性解決這個(gè)問(wèn)題

步驟:

    1. 在gcc鏈接命令行中添加-static -static-libgcc -static-libstdc++

    2. 將第三方依賴庫(kù)打開(kāi)靜態(tài)鏈接開(kāi)關(guān), 將原來(lái)鏈接.so的庫(kù),全改為鏈接.a

    3. gcc對(duì)鏈接庫(kù)順序很敏感, 鏈接庫(kù)順序需要按照從前至后為:  項(xiàng)目產(chǎn)生的靜態(tài)庫(kù) > 第三方庫(kù)靜態(tài)庫(kù) > 系統(tǒng)靜態(tài)庫(kù)

    4. 鏈接時(shí), 若有未解決的symbol, 可以嘗試在最后添加-lpthread及-lrt解決

   

在發(fā)布版本Linux上運(yùn)行可能遇到的問(wèn)題:

terminate called after throwing an instance of 'std::runtime_error'

what(): locale::facet::_S_create_c_locale name not valid

解決方法: 執(zhí)行之前運(yùn)行export LC_ALL="C"


評(píng)論

# re: 讓C/C++程序一次編譯可以發(fā)布到多版本Linux之上 2012-04-20 12:43 LOGOS
也可以把缺失的so一同發(fā)布  回復(fù)  更多評(píng)論
  

# re: 讓C/C++程序一次編譯可以發(fā)布到多版本Linux之上 2012-04-24 09:33 red
靜態(tài)庫(kù)鏈接感覺(jué)并不是個(gè)很好的方案,穩(wěn)定性不知道會(huì)不會(huì)有問(wèn)題
還有就是很多第三方庫(kù)的授權(quán)未必支持靜態(tài)庫(kù)  回復(fù)  更多評(píng)論
  

# re: 讓C/C++程序一次編譯可以發(fā)布到多版本Linux之上 2014-01-23 15:37 molixiaoge
為什么 -static 無(wú)法編譯  回復(fù)  更多評(píng)論
  

# re: 讓C/C++程序一次編譯可以發(fā)布到多版本Linux之上 2014-05-12 09:27 長(zhǎng)壽夢(mèng)
曾經(jīng)我的執(zhí)行程序依賴ssl庫(kù),把原編譯環(huán)境的所有的so庫(kù)到拷貝過(guò)來(lái),還是不行。直到把代碼在目標(biāo)linux環(huán)境編譯完成,再運(yùn)行,才沒(méi)問(wèn)題。@LOGOS
  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩视频免费在线| 久久er99精品| 欧美视频一区在线| 欧美日韩国产欧| 欧美精品福利视频| 欧美视频二区36p| 国产精品亚洲第一区在线暖暖韩国| 欧美激情一区二区在线 | 亚洲精品免费在线| 久久在线免费观看| 亚洲第一页自拍| 亚洲视频你懂的| 免费国产一区二区| 欧美 日韩 国产精品免费观看| 久久一区激情| 亚洲人成网站色ww在线| 亚洲视频网在线直播| 亚洲欧美日韩中文播放| 久久青草久久| 欧美性开放视频| 影音先锋日韩精品| 亚洲一区二区成人在线观看| 性欧美超级视频| 欧美大片在线观看一区| 亚洲伦理中文字幕| 久久精品免费电影| 欧美三日本三级少妇三2023| 国产一区二区久久精品| 亚洲精品一区二区三区四区高清 | 亚洲国产成人一区| 亚洲视频网在线直播| 久久婷婷综合激情| 中文无字幕一区二区三区| 久久三级视频| 国产日韩一区二区| 在线亚洲免费视频| 亚洲高清视频在线观看| 新67194成人永久网站| 日韩午夜在线视频| 欧美精品18+| 在线欧美三区| 久久99在线观看| 亚洲视频在线观看| 欧美日韩国产小视频在线观看| 国产一区二区三区高清播放| 亚洲午夜久久久久久久久电影院| 久色成人在线| 亚洲小视频在线观看| 免费观看久久久4p| 亚洲伦理网站| 欧美国产日韩一二三区| 亚洲福利视频网站| 蜜臀91精品一区二区三区| 亚洲在线免费观看| 国产精品国产成人国产三级| 99精品免费网| 亚洲精品日本| 欧美人在线视频| 99亚洲一区二区| 亚洲精品乱码久久久久久久久| 久久人体大胆视频| 亚洲国产另类久久精品| 美国成人直播| 久久先锋影音av| 亚洲精品久久7777| 亚洲人成网站999久久久综合| 欧美激情第3页| 亚洲天堂免费在线观看视频| 一区二区三区欧美在线| 国产精品入口福利| 亚洲影院色无极综合| 免费观看久久久4p| 女同性一区二区三区人了人一| 亚洲激情亚洲| 99国产精品久久久久久久久久| 欧美色视频在线| 欧美一区2区三区4区公司二百| 一二三区精品| 国产精品有限公司| 麻豆av一区二区三区| 欧美成人精品激情在线观看| 99这里只有精品| 亚洲婷婷综合久久一本伊一区| 国产美女高潮久久白浆| 蜜臀av性久久久久蜜臀aⅴ| 蜜臀av一级做a爰片久久| 一区二区激情视频| 亚洲欧美另类在线观看| 在线成人av| 一本高清dvd不卡在线观看| 国产女精品视频网站免费| 美国十次成人| 国产精品高潮呻吟久久av无限| 久久国产精品99国产| 老牛嫩草一区二区三区日本| 亚洲性av在线| 久久婷婷影院| 亚洲一区二区三区视频| 久久国内精品视频| 亚洲精品欧美在线| 亚洲乱码国产乱码精品精| 国产日韩欧美黄色| 91久久精品美女| 国产一区二区三区在线观看网站| 欧美成人69av| 国产精品永久| 亚洲国产欧美日韩另类综合| 国产日韩亚洲欧美| 亚洲欧美国产精品桃花| 久久久久久噜噜噜久久久精品| 一本色道88久久加勒比精品| 亚洲一区自拍| 一区二区三区产品免费精品久久75 | 国产私拍一区| 一本大道久久a久久综合婷婷| 国产日韩免费| 日韩一级在线观看| 亚洲精品国产精品乱码不99 | 国产欧美日韩免费| 欧美日本不卡| 国产一区二区精品| 亚洲欧美日韩人成在线播放| 亚洲日本中文字幕免费在线不卡| 午夜精品久久久久| 性久久久久久| 欧美日韩一区二区国产| 亚洲电影免费观看高清完整版在线| 国产精品主播| 亚洲夜晚福利在线观看| 亚洲网站在线| 国产精品va在线播放| 亚洲免费观看视频| 国产精品99久久99久久久二8| 欧美福利视频在线| 亚洲黄色大片| 一本色道**综合亚洲精品蜜桃冫| 欧美电影在线观看完整版| 欧美成人一区二免费视频软件| 原创国产精品91| 美女诱惑一区| 亚洲人成小说网站色在线| 亚洲精品中文字幕在线观看| 欧美成人午夜免费视在线看片 | 亚洲区国产区| 欧美国产在线观看| 亚洲黄网站黄| 一片黄亚洲嫩模| 欧美午夜激情视频| 亚洲乱码一区二区| 一区二区三区久久网| 女人色偷偷aa久久天堂| 91久久国产综合久久| 亚洲调教视频在线观看| 国产精品嫩草99av在线| 新片速递亚洲合集欧美合集| 蜜桃av噜噜一区二区三区| 亚洲国产成人高清精品| 欧美日韩精品久久久| 亚洲欧美日韩一区二区| 另类图片综合电影| 最新精品在线| 国产精品乱子久久久久| 久久人人97超碰精品888| 最近中文字幕mv在线一区二区三区四区 | 日韩视频久久| 国产精品视频久久一区| 午夜伦欧美伦电影理论片| 久久天天躁狠狠躁夜夜av| 亚洲国产日韩一级| 国产精品激情电影| 久久激情综合网| 亚洲区一区二| 久久久久久尹人网香蕉| 亚洲精品视频一区二区三区| 国产乱肥老妇国产一区二| 久久久久国产精品麻豆ai换脸| 亚洲人体影院| 久久精品一区二区三区中文字幕| 亚洲激情av在线| 国产日本欧美视频| 欧美69wwwcom| 99精品国产福利在线观看免费| 欧美中日韩免费视频| 亚洲欧洲日本一区二区三区| 国产精品一区二区三区成人| 欧美电影免费观看| 性欧美激情精品| 日韩亚洲欧美成人| 久久影视三级福利片| 香蕉乱码成人久久天堂爱免费| 亚洲国产精品久久久久秋霞蜜臀 | 精品99一区二区三区| 欧美性猛交xxxx免费看久久久| 久久一区二区三区国产精品| 亚洲网站在线观看| 亚洲精品乱码久久久久久久久 | 亚洲第一福利视频| 国产一区二区0| 国产欧美三级| 国产精品久久久久91|