<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

       

      轉(zhuǎn)載請(qǐng)注明表作者think8848及出處(http://think8848.cnblogs.com)

       

      node-mapnik依賴項(xiàng)中要求g++ >= 5, toolchain (>= GLIBCXX_3.4.20 from libstdc++)(見官網(wǎng)說(shuō)明),但是CentOS7里面默認(rèn)的gcc和g++的版本是4.8.5,GLIBCXX只到3.4.19,因此部署過(guò)程中各種問(wèn)題,經(jīng)過(guò)常期、大量的折騰,最終終于找到一個(gè)可行的部署方法,在本文中將用到一些需要自行編譯安裝的包,只能保證文中的版本沒(méi)有問(wèn)題,不保證其他版本可用。

       

      gcc5.4.0源碼包  鏈接:http://pan.baidu.com/s/1sljcdrR 密碼:u48m

      boost1.62.0源碼包 鏈接:http://pan.baidu.com/s/1sl6cEeh 密碼:mz0h

      mapnik3.0.12完整源碼包(不需要從github上再下載依賴包) 鏈接:http://pan.baidu.com/s/1o79qvjk 密碼:aw4g

       

      1. 最小安裝的CentOS安裝必要的工具包

      建議本文中的所有操作使用root帳號(hào),因?yàn)樵趍ake install使用sudo權(quán)限時(shí),如果root帳號(hào)下沒(méi)有及時(shí)更新環(huán)境變量,就會(huì)發(fā)生很多意外;本文介紹的部署過(guò)程是一個(gè)非常漫長(zhǎng)的過(guò)程,完整走一遍只少要半天(虛擬機(jī):4G內(nèi)存),為了避免不必要的麻煩,建議直接用root。

      su
      
      yum install wget vim net-tools unzip bzip2 gcc gcc-c++ epel-release libicu-devel -y

      查看gcc和g++的版本,顯示為4.8.5

      2. 升級(jí)gcc版本

      CentOS下升級(jí)gcc版本有兩個(gè)途徑,一個(gè)是添加其他源進(jìn)行自動(dòng)升級(jí),一個(gè)是手動(dòng)編譯升級(jí),這里先順便講下自動(dòng)升級(jí)的兩個(gè)辦法:

      a. 添加Fedora源

      在 /etc/yum.repos.d 目錄中添加文件 FedoraRepo.repo ,并輸入以下內(nèi)容:

      [warning:fedora]
      name=fedora
      mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-23&arch=$basearch
      enabled=1
      gpgcheck=1
      gpgkey=https://getfedora.org/static/34EC9CBA.txt

      然后使用 yum install gcc gcc-c++ -y 進(jìn)行安裝,注意,如果你要用這種方法安裝gcc,那在第1步就干脆不要安裝gcc和gcc-c++包了

      b. 使用Devtoolset-4升級(jí),詳細(xì)方法見這里

      yum install centos-release-scl
      
      yum install devtoolset-4-gcc*
      
      scl enable devtoolset-4 bash
      
      which gcc
      
      gcc --version

       

      好了,以上方法我們都不選,因?yàn)槲易罱K部署成功用的是手動(dòng)升級(jí)的方法(至于為什么不選擇自動(dòng)更新,還有一個(gè)很重要的原因,那就是CentOS存在的邏輯,很多人選用CentOS而不是Ubuntu作為服務(wù)器操作系統(tǒng),主要原因是什么呢?)

      好了,我們先下載gcc5.4.0,下載地址 http://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz

      cd /usr/local/src
      
      wget -O gcc-5.4.0.tar.gz http://101.96.10.61/ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
      
      tar -xzvf gcc-5.4.0.tar.gz
      
      cd gcc-5.4.0
      
      #下載依賴項(xiàng) .
      /contrib/download_prerequisites

      #為了在長(zhǎng)期的編譯過(guò)程中Linux不黑屏,臨時(shí)關(guān)閉屏保

      setterm -blank 0

      mkdir build && cd build

      ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

      #4核cpu就是j4,在vmware12下有用
      make -j4

      #機(jī)器不好大概這里要花3小時(shí)

      make install

       先查看下GLIBCXX的版本信息,不出意外的話,應(yīng)該最高就到GLIBCXX_3.4.19,我們要用最新的版本替換原來(lái)的版本

      搜索libstdc++.so.6*,看看都有什么結(jié)果,我們會(huì)發(fā)現(xiàn)在/usr/lib64里面有6.0.19,這是我們使用yum安裝的,/usr/local/lib64/libstdc++.so.6.0.21是我們剛才編譯安裝的,需要用最新的替換舊版本的。

      首先將/usr/lib64下面的libstdc++.so.6*刪除掉 

      rm /usr/lib64/libstdc++.so.6* -f (實(shí)際刪除兩個(gè)文件),

      然后我們?cè)?usr/lib64下為libstdc++.so.6.0.21建立鏈接

      ln -s /usr/local/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6 ,

      順便再將/usr/local/lib64下面一個(gè)看著礙眼的文件刪除 

      rm /usr/local/lib64/libstdc++.so.6.0.21-gdb.py -f ,

      (如果不刪除這個(gè)文件,則在ldconfig創(chuàng)建動(dòng)態(tài)鏈接庫(kù)文件緩存時(shí)會(huì)報(bào)一個(gè)莫名其妙的錯(cuò)誤)

      最后在/etc/ld.so.conf中加入/usr/local/lib64,為動(dòng)態(tài)共享庫(kù)指定搜索路徑 vim /etc/ld.so.conf 

      然后創(chuàng)建緩存

      ldconfig

      再次檢查GLIBCXX版本 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX | more ,這時(shí)就已經(jīng)包含GLIBCXX_3.4.21了

      檢查下gcc和g++的版本,注意,如果檢查到的版本不是5.4.0,而是4.8.5(安裝前的版本),則仔細(xì)想想有沒(méi)有按照本文步驟來(lái),如果確認(rèn)是沒(méi)有出入,那么就重啟機(jī)器吧 reboot ,啟動(dòng)好后再次檢查,應(yīng)該就可以看到正確結(jié)果了。

      3. 編譯安裝boost1.62.0 

      cd /usr/local/src
      
      wget -O boost_1_62_0.tar.gz http://pilotfiber.dl.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.gz
      
      tar -xzvf boost_1_62_0.tar.gz
      
      cd boost_1_62_0
      
      ./bootstrap.sh --with-icu --with-libraries=all
      
      ./b2 threading=multi

      #等吧,雖然沒(méi)有g(shù)cc編譯時(shí)間長(zhǎng),但是也不快 .
      /b2 install

      經(jīng)過(guò)一番磨人的編譯,boost的編輯結(jié)果出來(lái)了,貌似有些錯(cuò)誤,但是不用理會(huì)

      再次打開/etc/ld.so.conf添加共享庫(kù)路徑,在里面添加 /etc/local/lib 

      vim /etc/ld.so.conf

      最后不要忘記更新緩存

      ldconfig

      5. 編譯安裝mapnik

      先安裝依賴項(xiàng),依賴項(xiàng)比較多,要仔細(xì)輸入,避免后面不必要的麻煩

      yum install freetype-devel libtool-ltdl-devel libpng-devel libtiff-devel libjpeg-devel python-devel harfbuzz-devel postgresql-devel proj-devel proj-epsg sqlite-devel libwebp-devel gdal-devel cairo-devel -y

      第一步先下載源碼,(直接下載的zip包里面缺少依賴項(xiàng))

      yum install git -y
      
      git clone git://github.com/mapnik/mapnik.git
      
      cd mapnik
      
      git submodule update --init

      編譯安裝源碼,時(shí)間也有點(diǎn)小長(zhǎng),但是還能忍受,4核CPU用JOBS=4,具體視電腦情況而定

      python scons/scons.py configure | more

      python scons/scons.py JOBS=4

      python scons/scons.py install

      到這一步了就小心點(diǎn),確保每個(gè)依賴項(xiàng)都已經(jīng)存在

      查看mapnik版本 mapnik-config -v 

      安裝完成后測(cè)試下mapnik是否能正常工作

      ldconfig

      cd /usr/local/src/mapnik/demo/c++

      mkdir demo && cp ../data ./demo -r

      vim rundemo.cpp

      在rundemo.cpp中修改以下內(nèi)容

      修改前:

      修改后:

      然后編譯運(yùn)行

      make clean
      
      make 
      
      ./rundemo

      有圖有真相,看看生成的地圖是啥樣的

      6.安裝node.js

      這一步是本文中最簡(jiǎn)單的了,沒(méi)有任何技巧,如果安裝出問(wèn)題 ,那一定是沒(méi)有按照我前面的步驟來(lái)

      yum install nodejs -y

       

      7. 安裝node-mapnik

      cd /usr/local/src
      
      mkdir node-mapnik && cd node-mapnik
      
      vim package.json

      在打開創(chuàng)建package.json文件后,輸入以下內(nèi)容

      {
        "name": "nmtest",
        "description": "node-mapnik test by think8848",
        "version": "0.0.1",
        "private": true,
        "dependencies": {
          "mapnik": "3.*"  
        }
      }

      開始安裝node-mapnik,通常而言,使用 npm install 即可安裝好所有依賴包,然后因?yàn)楸娝苤脑?..,如果你沒(méi)有沒(méi)有給力的FQ工具,還是使用下列命令吧

      npm install --registry=https://registry.npm.taobao.org

      如果看到下面這個(gè)畫面,就說(shuō)明成功了99%了

      寫一段代碼測(cè)試下先將剛才我們?cè)诎惭bmapnik時(shí)生成的demo.jpg復(fù)制過(guò)來(lái)

      cp /usr/local/src/mapnik/demo/c++/demo.jpg ./

      創(chuàng)建node代碼, vim app.js ,輸入以下內(nèi)容

      var mapnik = require('mapnik');
      new mapnik.Image.open('demo.jpg').save('demo.png');

       

      執(zhí)行結(jié)果:

       

      ---------------------2016年12月18日更新----------------------------

      將node-mapnik添加到公共模塊中

      先將node-mapnik安裝到公共模塊的目錄,默認(rèn)情況下安裝到 /usr/lib/node_modules 

      sudo npm install -g mapnik

      添加 NODE_PATH 環(huán)境變量,使用 sudo vim /etc/profile 命令,然后在文件最下面添加

      export NODE_PATH=/usr/lib/node_modules:$PATH

      最后再更新環(huán)境變量

      source /etc/profile

      這樣以后就不用每次使用時(shí)都要安裝一次node-mapnik了,安裝的過(guò)程實(shí)在是太痛苦了,沒(méi)有梯子基本上不會(huì)成功。

      ---------------------2016年12月18日更新結(jié)束---------------------------- 

       

      接下來(lái)將學(xué)習(xí)如何使用node-mapnik生成openstreetmap瓦片圖

       

      posted on 2016-11-12 17:04  think8848  閱讀(4980)  評(píng)論(31)    收藏  舉報(bào)
      主站蜘蛛池模板: 一区二区三区鲁丝不卡| 乱码中文字幕| 久热伊人精品国产中文| 特黄三级又爽又粗又大| 欧美牲交videossexeso欧美| 一本色道久久综合熟妇人妻| 亚洲人妻精品一区二区| 熟妇人妻一区二区三区四区| 亚洲国产一区二区av| 国产精品久久久久影院老司| 国产精品老熟女免费视频| 霞浦县| 视频一区视频二区制服丝袜| 亚洲av激情久久精品人| 麻豆一区二区中文字幕| 国产精品丝袜亚洲熟女| 国内精品久久久久久久coent| 99在线国内在线视频22| 亚洲精品成人一二三专区| 无码人妻精品一区二区三区东京热| 久久精品国产精品亚洲艾| 亚洲精品一区二区美女| 中文字幕精品亚洲二区| 中国少妇人妻xxxxx| 最近高清中文在线字幕在线观看 | 成在线人午夜剧场免费无码| 永登县| 婷婷综合缴情亚洲 | 少妇真人直播免费视频| 中文字幕日韩精品有码| 无套内谢少妇高清毛片| 久久男人av资源网站| 亚洲综合视频一区二区三区| 中文字幕日韩精品国产| 国产欧美丝袜在线二区| 国产黄色精品一区二区三区| 人人澡超碰碰97碰碰碰| 亚洲av国产成人精品区| 亚洲爆乳WWW无码专区| 国产亚洲国产精品二区| 丰满少妇熟乱xxxxx视频|