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

戰魂小筑

討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

最近頁游開放平臺比較多, 每個平臺要求的Linux版本各不相同, 這給開發人員部署服務器帶來了很大的困難. 在本機Linux編譯的程序,發布時即便將依賴的so附帶到目標Linux環境,仍然會碰到依賴及版本問題,例如:

[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庫依賴不正確. 本人使用的Linux編譯版本為Mint 11(基于Ubuntu), 一般Ubuntu發行版的glibc配備非常高. 但是上文中的發布的Linux版本為CentOS 5.8

使用/lib/libc.so.6 查看libc版本為2.5, 遠遠低于開發環境的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操作系統的特有elf加載順序. (可以參考此文). 雖然可以很大程度上解決Windows早期版本的dll hell問題, 但是給部署帶來了很大難度

一般常見的解決方法是, 找到一個與目標Linux版本及glibc版本一致的Linux, 將代碼及依賴包放在之上編譯, 完成后再發布.這種方法與Linux下常見軟件安裝方法類似. 但是對于商用服務器部署步驟來說未免繁瑣, 安全性低.

還有一種方法,使用靜態鏈接. 將所有可執行文件文件依賴的靜態庫, 系統庫,全部靜態鏈接到可執行文件中,可以一次性解決這個問題

步驟:

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

    2. 將第三方依賴庫打開靜態鏈接開關, 將原來鏈接.so的庫,全改為鏈接.a

    3. gcc對鏈接庫順序很敏感, 鏈接庫順序需要按照從前至后為:  項目產生的靜態庫 > 第三方庫靜態庫 > 系統靜態庫

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

   

在發布版本Linux上運行可能遇到的問題:

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

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

解決方法: 執行之前運行export LC_ALL="C"

posted on 2012-04-20 11:35 戰魂小筑 閱讀(7250) 評論(4)  編輯 收藏 引用 所屬分類: 網絡 服務器技術C++/ 編程語言操作系統

評論

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

# re: 讓C/C++程序一次編譯可以發布到多版本Linux之上 2012-04-24 09:33 red
靜態庫鏈接感覺并不是個很好的方案,穩定性不知道會不會有問題
還有就是很多第三方庫的授權未必支持靜態庫  回復  更多評論
  

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

# re: 讓C/C++程序一次編譯可以發布到多版本Linux之上 2014-05-12 09:27 長壽夢
曾經我的執行程序依賴ssl庫,把原編譯環境的所有的so庫到拷貝過來,還是不行。直到把代碼在目標linux環境編譯完成,再運行,才沒問題。@LOGOS
  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区二区高清不卡| 亚洲欧美日韩精品久久亚洲区| 亚洲日韩中文字幕在线播放| 激情成人在线视频| 在线成人www免费观看视频| 亚洲高清视频一区二区| 亚洲三级免费| 亚洲图色在线| 久久精品视频在线播放| 免费在线亚洲欧美| 亚洲精品黄网在线观看| 在线一区二区日韩| 欧美在线亚洲一区| 欧美国产精品v| 国产精品美女久久久| 国内精品久久久久影院色| 亚洲欧洲日产国产网站| 亚洲永久免费| 美女脱光内衣内裤视频久久影院 | 欧美精品亚洲精品| 欧美揉bbbbb揉bbbbb| 国产欧美日韩免费看aⅴ视频| 在线成人h网| 亚洲欧美日韩综合| 欧美黄色成人网| 亚洲综合色噜噜狠狠| 欧美成人免费播放| 国产日韩欧美精品在线| 日韩视频在线一区二区| 久久精品国产在热久久| 亚洲另类春色国产| 老司机午夜精品视频| 国产日韩欧美高清免费| 一二三区精品| 欧美 日韩 国产一区二区在线视频 | 久久九九久久九九| 老色鬼精品视频在线观看播放| 欧美三区在线观看| 一区在线播放| 欧美一区二区三区免费大片| 亚洲黄色影片| 久久国产乱子精品免费女| 欧美日韩亚洲一区二| 亚洲黄色天堂| 久久久久国内| 午夜精品久久久久久久99水蜜桃| 欧美日韩午夜激情| 99成人免费视频| 免费日韩一区二区| 欧美一区二区在线播放| 国产精品每日更新| 亚洲永久免费观看| 亚洲午夜精品网| 欧美午夜一区二区三区免费大片 | 亚洲视频在线观看网站| 欧美国产日韩一区二区在线观看| 国产又爽又黄的激情精品视频| 亚洲欧美日韩视频一区| 99国产精品久久久久久久久久 | 亚洲电影成人| 久久野战av| 亚洲丰满在线| 欧美激情第三页| 欧美黄色aaaa| 99天天综合性| 亚洲午夜激情网站| 国产视频在线观看一区| 久久精品午夜| 久久综合999| 亚洲日本va在线观看| 亚洲福利在线观看| 欧美日韩国产高清视频| aa级大片欧美三级| 一区二区三区高清视频在线观看| 欧美午夜视频网站| 久久精品国产精品亚洲综合| 久久久久久网址| 亚洲精品在线观| 一本一本a久久| 国产亚洲a∨片在线观看| 久久深夜福利| 欧美精品免费看| 亚洲欧美日韩国产综合| 欧美一区二区高清| 亚洲精品国产精品乱码不99按摩 | 亚洲精品视频在线观看网站| 亚洲人人精品| 国产美女扒开尿口久久久| 老**午夜毛片一区二区三区| 欧美aⅴ99久久黑人专区| 亚洲视频在线一区| 久久福利精品| 亚洲无限av看| 久久久久久久久岛国免费| 99re这里只有精品6| 欧美诱惑福利视频| 日韩视频在线一区| 西西裸体人体做爰大胆久久久| 亚洲国产三级网| 亚洲一区日韩在线| 亚洲毛片视频| 久久久999精品免费| 亚洲一区成人| 免费日韩av| 久久精品亚洲精品| 欧美色视频日本高清在线观看| 久久久久久久久久看片| 国产精品99免费看 | 亚洲调教视频在线观看| 久久精品国产第一区二区三区| 夜夜夜精品看看| 久久久777| 欧美一区二区三区的| 欧美日韩精品在线视频| 欧美高清视频在线播放| 国内外成人免费激情在线视频网站| 亚洲欧洲日本在线| 伊人久久久大香线蕉综合直播| 亚洲永久免费精品| 亚洲自拍偷拍一区| 欧美偷拍另类| 99国产精品自拍| 日韩网站在线观看| 欧美成人激情在线| 欧美14一18处毛片| 激情欧美一区二区三区在线观看| 亚洲制服欧美中文字幕中文字幕| 亚洲网站在线观看| 欧美日韩一区二区三区免费| 亚洲国产精品一区二区www在线| 悠悠资源网久久精品| 欧美自拍丝袜亚洲| 久久嫩草精品久久久久| 国产一区二区三区丝袜| 欧美一级理论片| 久久久久88色偷偷免费| 国产网站欧美日韩免费精品在线观看 | 欧美国产日韩亚洲一区| 伊人精品久久久久7777| 久久久.com| 亚洲免费影院| 久久综合色综合88| 另类综合日韩欧美亚洲| 国产综合色产在线精品| 欧美一区二区在线免费播放| 久久久久久久成人| 在线精品高清中文字幕| 美女91精品| 欧美激情久久久| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩亚洲三区| 亚洲愉拍自拍另类高清精品| 性欧美暴力猛交69hd| 国产综合久久久久久鬼色| 久久久久久久999| 亚洲第一视频网站| 亚洲性线免费观看视频成熟| 国产美女一区| 麻豆精品一区二区综合av| 亚洲精品色图| 欧美在线视频一区二区| 亚洲综合第一| 亚洲美女电影在线| 欧美一区二区国产| 你懂的成人av| 亚洲视频精选在线| 国产一区二区三区在线免费观看| 老司机免费视频久久| 亚洲美女av在线播放| 欧美影院午夜播放| 亚洲精品精选| 国产日韩专区| 欧美日韩不卡合集视频| 午夜在线成人av| 亚洲国产cao| 欧美影院视频| 一区二区三区免费看| 国内自拍视频一区二区三区| 欧美精品免费在线| 久久精品国产一区二区三区| 日韩视频在线观看国产| 免费久久99精品国产自| 亚洲永久免费精品| 亚洲精品社区| 激情欧美一区| 国产欧美一区二区三区视频| 欧美激情视频一区二区三区在线播放 | 亚洲欧洲综合另类在线| 性做久久久久久| aa国产精品| 91久久国产综合久久蜜月精品| 国产精品制服诱惑| 欧美日韩亚洲不卡| 欧美国产日本在线| 另类酷文…触手系列精品集v1小说| 亚洲摸下面视频| 一区二区三区欧美成人| 亚洲精品一二三区| 亚洲国产免费看| 亚洲第一精品影视|