• <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>

            Error

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            #

                 摘要: date顯示時(shí)間tsselect設(shè)置時(shí)區(qū)本文是基本是[Linux的時(shí)間設(shè)置與同步(NTP)]的原文,只在一些地方更新和完善了一下。  一、時(shí)間和時(shí)區(qū)  如果有人問你說現(xiàn)在幾點(diǎn)? 你看了看表回答他說晚上8點(diǎn)了. 這樣回答看上去沒有什么問題,但是如果問你的這個(gè)人在歐洲的話那么你的回答就會(huì)讓他很疑惑,因?yàn)樗抢镞€太陽當(dāng)空呢.  這里就有產(chǎn)生了一個(gè)如何定義時(shí)間的問題. 因?yàn)樵诘厍颦h(huán)繞太陽旋轉(zhuǎn)的24個(gè)小時(shí)中...  閱讀全文
            posted @ 2014-01-15 13:58 Enic 閱讀(291) | 評(píng)論 (0)編輯 收藏

            實(shí)際上我就是用默認(rèn)的bjam install,偷懶了,,,
            linux默認(rèn)頭文件會(huì)放到/usr/local/include下面  lib放到/usr/local/lib下面





            1.下載 boost-1_52 http://sourceforge.net/projects/boost/files/boost/1.52.0/
            2. 將文件解壓在/usr/local/目錄下
            3. 進(jìn)入/usr/local/boost-1_52_0/ 目錄, 在terminal中輸入
                         ./bootstrap.sh
            4.進(jìn)入/usr/local/boost-1_52_0/ 目錄,在terminal中輸入
                        sudo ./bjam  --layout=versioned --build-type=complete --toolset=gcc install 
            5.添加環(huán)境變量(剛改完要重啟或者注銷一下來更新剛修改過的環(huán)境變量)
               兩種方法:
               (1)修改/etc/profie文件 末尾添加
                        export BOOST_INCLUDE=/usr/local/include/boost-1_52
                        export BOOST_LIB=/usr/local/lib
                (2)在/etc/profile.d/ 中新建一個(gè)shell文件boost.sh
                         #!/bin/sh 
                         export BOOST_INCLUDE=/usr/local/include/boost-1_52
                         export BOOST_LIB=/usr/local/lib






            1.Boost庫的下載地址:http://sourceforge.net/projects/boost/files/boost/1.44.0/ 
            2.Boost庫的編譯,安裝 
            下載boost_1_44_0.tar.gz    
            tar -zxvf boost_1_44_0.tar.gz  
            然后進(jìn)入解壓縮后的文件夾編譯boost的編譯器jam 
            cd boost_1_44_0\tools\jam 
            ./build_dist.sh 
            編譯完后在這個(gè)目錄下有編譯出的bjam文件 
            boost_1_44_0\tools\jam\stage\bin.linuxx86 
            把它c(diǎn)opy到boost_1_44_0 然后在這個(gè)目錄下運(yùn)行命令編譯: 
            ./bjam "-sTOOLS=gcc" "--includedir=/usr/include" "--libdir=/usr/lib/boost" install 
            ./bjam --toolset=gcc --includedir=/usr/local/include --libdir=/usr/local/lib/boost install 
            開始編譯,等待編譯完成,需很長(zhǎng)時(shí)間。 
            關(guān)于bjam的后面的參數(shù)的設(shè)置: 
            -sTOOLS=gcc  指定編譯器為GCC 
            --includedir=/usr/include/  指定頭文件的安裝目錄,我安裝在/usr/include下。如果安裝成功,將在/usr/include/生成目錄boost_1_33,該目錄下就是boost的頭文件目錄 
            --libdir=/usr/lib/boost  指定boost的庫文件的存放位置, 生成的 .a .so 文件將放在該目錄下 
            install 編譯并安裝boost
            3.注意事項(xiàng) 
            安裝完成后,為了每次使用時(shí)不用輸入太多的目錄,可以在/etc/profile中加入: 
            BOOST_INCLUDE=/usr/include/boost 
            BOOST_LIB=/usr/lib/boost 
            export BOOST_INCLUDE BOOST_LIB 
            以后在編譯程序時(shí),只需要用:-I$BOOST_INCLUDE -L$BOOST_LIB 即可,還要使用-l指定了鏈接庫。 
            也許會(huì)出現(xiàn)編譯時(shí)或者運(yùn)行時(shí)找不到動(dòng)態(tài)庫(*.so)的錯(cuò)誤 
            把/usr/lib/boost追加到動(dòng)態(tài)鏈接庫配置文件/etc/ld.so.conf中,然后直接運(yùn)行l(wèi)dconfig,即可! 
            {僅測(cè)試成功一次的方式:./bjam --toolset 
            lib:/newdisk/hotevent/boost_1_44_0/stage/lib 
            include:/newdisk/hotevent/boost_1_44_0 
            ln -s /newdisk/hotevent/boost_1_44_0  /usr/include/boost 
            并把/newdisk/hotevent/boost_1_44_0/stage/lib加入到/etc/ld.so.conf,用命令ldconfig更新一下。 
            在編譯程序時(shí)直接用g++ re.cpp -lboost_regex -o re即可!} 
            4.Boost庫的使用舉例 
            第一個(gè)測(cè)試文件是lex.cpp: 
            #include <boost/lexical_cast.hpp> 
            #include <iostream> 
            int main() 
            using boost::lexical_cast; 
            int a = lexical_cast<int>("123"); 
            double b = lexical_cast<double>("123.12"); 
            std::cout<<a<<std::endl; 
            std::cout<<b<<std::endl; 
            return 0; 
            }編譯:g++ lex.cpp -I$BOOST_INCLUDE -o lex 
            運(yùn)行:./lex 
            輸出: 
            123 
            123.12 
            我們的第二個(gè)例子是re.cpp: 
            #include <iostream> 
            #include <string> 
            #include <boost/regex.hpp> 
            int main() { 
            std::string s = "who,lives:in-a,pineapple under the sea?"; 
            boost::regex re(",|:|-|\\s+"); 
            boost::sregex_token_iterator 
            p(s.begin( ), s.end( ), re, -1); 
            boost::sregex_token_iterator end; 
            while (p != end) 
            std::cout << *p++ << '\n'; 
            }編譯:g++ re.cpp -I$BOOST_INCLUDE -lboost_regex -o re運(yùn)行:./re輸出: 
            who 
            lives 
            in 
            pineapple 
            under 
            the 
            sea? 
            附注:為了讓動(dòng)態(tài)鏈接庫為系統(tǒng)所共享,還需運(yùn)行動(dòng)態(tài)鏈接庫的管理命令--ldconfig 
            ldconfig 命令的用途,主要是在默認(rèn)搜尋目錄(/lib和/usr/lib)以及動(dòng)態(tài)庫配置文件/etc/ld.so.conf內(nèi)所列的目錄下,搜索出可共享的動(dòng)態(tài) 鏈接庫(格式如前介紹,lib*.so*),進(jìn)而創(chuàng)建出動(dòng)態(tài)裝入程序(ld.so)所需的連接和緩存文件.緩存文件默認(rèn)為 /etc/ld.so.cache,此文件保存已排好序的動(dòng)態(tài)鏈接庫名字列表.
            posted @ 2014-01-15 13:43 Enic 閱讀(1185) | 評(píng)論 (0)編輯 收藏

            1.linux動(dòng)態(tài)鏈接庫管理機(jī)制和win比起來只是半成品

            2.luabind對(duì)函數(shù)綁定太敏感了,返回值少了一個(gè)&就直接罷工了

            3.boost::filesystem 1.4 到1.5的時(shí)候有了大的變化,應(yīng)該是支持了unicode,然后坑來了,新版win上默認(rèn)是unicode所以string返回的是string值類型,而wstring默認(rèn)返回&類型,這個(gè)使用luabind綁定的時(shí)候應(yīng)為模版的原因使用string&綁定string的時(shí)候感知不到,直接core down了,,,
            關(guān)于第三點(diǎn):vc是能感知到的gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)這個(gè)GCC是他倆的感知不到
            posted @ 2014-01-15 13:07 Enic 閱讀(231) | 評(píng)論 (0)編輯 收藏

            第一反應(yīng)是:居然沒有對(duì)應(yīng)的.so 和.a,dll搜索path居然是編譯階段就定好了。

            好吧,都是可以控制的


            靜態(tài)庫:

             對(duì)函數(shù)庫的鏈接是放在編譯時(shí)期(compile time)完成的。所有相關(guān)的對(duì)象文件(object file)與牽涉到的函數(shù)庫(library)被鏈接合成一個(gè)可執(zhí)行文件(executable file),即將動(dòng)態(tài)庫內(nèi)容拷貝到自己需要的程序中,所以程序在運(yùn)行時(shí),與函數(shù)庫再無瓜葛,所以這些函數(shù)庫被成為靜態(tài)庫(static libaray),通常文件名為“libxxx.a”的形式。
             
                   在linux環(huán)境中, 使用ar命令創(chuàng)建靜態(tài)庫文件.如下是命令的選項(xiàng): 
                      d -----從指定的靜態(tài)庫文件中刪除文件 
                      m -----把文件移動(dòng)到指定的靜態(tài)庫文件中 
                      p -----把靜態(tài)庫文件中指定的文件輸出到標(biāo)準(zhǔn)輸出 
                      q -----快速地把文件追加到靜態(tài)庫文件中 
                      r -----把文件插入到靜態(tài)庫文件中 
                      t -----顯示靜態(tài)庫文件中文件的列表 
                      x -----從靜態(tài)庫文件中提取文件 
                      還有多個(gè)修飾符修改以上基本選項(xiàng),詳細(xì)請(qǐng)man ar 以下列出三個(gè): 
                      a -----把新的目標(biāo)文件(*.o)添加到靜態(tài)庫文件中現(xiàn)有文件之后 
                      b -----***************************************之前 
                      v -----使用詳細(xì)模式       ar 命令的命令行格式如下:       ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...      eg:         ar -crs hello.a hello.c
            動(dòng)態(tài)庫 :
             庫函數(shù)的鏈接載入推遲到程序運(yùn)行的時(shí)期(runtime)。這就是如雷貫耳的動(dòng)態(tài)鏈接庫(dynamic link library)技術(shù)。
            動(dòng)態(tài)鏈接庫的特點(diǎn)與優(yōu)勢(shì):
             1. 可以實(shí)現(xiàn)進(jìn)程之間的資源共享。
             某個(gè)程序的在運(yùn)行中要調(diào)用某個(gè)動(dòng)態(tài)鏈接庫函數(shù)的時(shí)候,操作系統(tǒng)首先會(huì)查看所有正在運(yùn)行的程序,看在內(nèi)存里是否已有此庫函數(shù)的拷貝了。如果有,則讓其共享那一個(gè)拷貝;只有沒有才鏈接載入。這樣的模式雖然會(huì)帶來一些“動(dòng)態(tài)鏈接”額外的開銷,卻大大的節(jié)省了系統(tǒng)的內(nèi)存資源。C的標(biāo)準(zhǔn)庫就是動(dòng)態(tài)鏈接庫,也就是說系統(tǒng)中所有運(yùn)行的程序共享著同一個(gè)C標(biāo)準(zhǔn)庫的代碼段。
             2. 將一些程序升級(jí)變得簡(jiǎn)單。用戶只需要升級(jí)動(dòng)態(tài)鏈接庫,而無需重新編譯鏈接其他原有的代碼就可以完成整個(gè)程序的升級(jí)
             3. 甚至可以真正做到鏈接載入完全由程序員在程序代碼中控制。
                所有的函數(shù)本著“有需求才調(diào)入”的原則,于是大大節(jié)省了系統(tǒng)資源。

            動(dòng)態(tài)鏈接庫的創(chuàng)建

             由于動(dòng)態(tài)鏈接庫函數(shù)的共享特性,它們不會(huì)被拷貝到可執(zhí)行文件中。在編譯的時(shí)候,編譯器只會(huì)做一些函數(shù)名之類的檢查。在程序運(yùn)行的時(shí)候,被調(diào)用的動(dòng)態(tài)鏈接庫函數(shù)被安置在內(nèi)存的某個(gè)地方,所有調(diào)用它的程序?qū)⒅赶蜻@個(gè)代碼段。因此,這些代碼必須實(shí)用相對(duì)地址,而不是絕對(duì)地址。在編譯的時(shí)候,我們需要告訴編譯器,這些對(duì)象文件是用來做動(dòng)態(tài)鏈接庫的,所以要用地址不無關(guān)代碼(Position Independent Code (PIC))。

            對(duì)gcc編譯器,只需添加上 -fPIC 標(biāo)簽,如: 
            1.創(chuàng)建共享庫 
                 gcc -fPIC -c error.c                
                 gcc -fPIC -c errorlog.c
                 gcc -shared -o libapue.so error.o errorlog.o 
            這樣就創(chuàng)建了共享庫! 
            注意到最后一行,-shared 標(biāo)簽告訴編譯器這是要建立動(dòng)態(tài)鏈接庫。這與靜態(tài)鏈接庫的建立很不一樣,后者用的是 ar 命令。也注意到,動(dòng)態(tài)鏈接庫的名字形式為 “libxxx.so” 后綴名為 “.so”

            2.編譯共享庫 
               
             使用動(dòng)態(tài)鏈接庫,首先需要在編譯期間讓編譯器檢查一些語法與定義。

             這與靜態(tài)庫的實(shí)用基本一樣,用的是 -Lpath 和 -lxxx 標(biāo)簽。如:

             gcc file1.o file2.o -Lpath -lxxx -o program.exe

             編譯器會(huì)先在path文件夾下搜索libxxx.so文件,如果沒有找到,繼續(xù)搜索libxxx.a(靜態(tài)庫)。

             在程序運(yùn)行期間,也需要告訴系統(tǒng)去哪里找你的動(dòng)態(tài)鏈接庫文件。在UNIX下是通過定義名為 LD_LIBRARY_PATH 的環(huán)境變量 來實(shí)現(xiàn)的。只需將path賦值給此變量即可。csh 命令為:

             setenv LD_LIBRARY_PATH your/full/path/to/dll

             一切安排妥當(dāng)后,你可以用 ldd 命令檢查是否連接正常。

             ldd program.exe

             

            如何才能讓動(dòng)態(tài)加載器發(fā)現(xiàn)庫文件呢?有兩種方法可以解決: 
                 LD_LIBRARY_PATH 環(huán)境變量  
                 /etc/ld.so.conf文件 
                1.環(huán)境變量 
                   export LD_LIBRARY_PATH="dir$LD_LIBRARY_PATH" 
                2.修改/etc/ld.so.conf文件.位于/etc/ld.so.conf 
            一般應(yīng)用程序的庫文件不與系統(tǒng)庫文件放在同一個(gè)目錄下,一般把應(yīng)用程序的共享庫文件放在/usr/local/lib下,新建一個(gè)屬于自己的目錄apue,然后把剛才libapue.so復(fù)制過去就行了
            同時(shí)在/etc/ld.so.conf中新增一行: 
            /usr/local/lib/apue

            實(shí)例分析:
            1、動(dòng)態(tài)庫的編譯

            下面通過一個(gè)例子來介紹如何生成一個(gè)動(dòng)態(tài)庫。這里有一個(gè)頭文件:so_test.h,三個(gè).c文件:test_a.c、test_b.c、test_c.c,我們將這幾個(gè)文件編譯成一個(gè)動(dòng)態(tài)庫:libtest.so。

            so_test.h:

            #include 
            #include

            void test_a();
            void test_b();
            void test_c();


            test_a.c:

            #include "so_test.h"
            void test_a()
            {
             printf("this is in test_a.../n");
            }


            test_b.c:
            #include "so_test.h"
            void test_b()
            {
             printf("this is in test_b.../n");
            }

            test_a.c:

            #include "so_test.h"
            void test_c()
            {
             printf("this is in test_c.../n");
            }

            將這幾個(gè)文件編譯成一個(gè)動(dòng)態(tài)庫:libtest.so
            $ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

            2、動(dòng)態(tài)庫的鏈接

            在1、中,我們已經(jīng)成功生成了一個(gè)自己的動(dòng)態(tài)鏈接庫libtest.so,下面我們通過一個(gè)程序來調(diào)用這個(gè)庫里的函數(shù)。程序的源文件為:test.c。

            test.c:

            #include "so_test.h"
            int main()
            {
            test_a();
            test_b();
            test_c();
            return 0;

            }

            l 將test.c與動(dòng)態(tài)庫libtest.so鏈接生成執(zhí)行文件test:

            $ gcc test.c -L. -ltest -o test

            l 測(cè)試是否動(dòng)態(tài)連接,如果列出libtest.so,那么應(yīng)該是連接正常了

            $ ldd test

            l 執(zhí)行test,可以看到它是如何調(diào)用動(dòng)態(tài)庫中的函數(shù)的。
            3、編譯參數(shù)解析
            最主要的是GCC命令行的一個(gè)選項(xiàng):
            -shared 該選項(xiàng)指定生成動(dòng)態(tài)連接庫(讓連接器生成T類型的導(dǎo)出符號(hào)表,有時(shí)候也生成弱連接W類型的導(dǎo)出符號(hào)),不用該標(biāo)志外部程序無法連接。相當(dāng)于一個(gè)可執(zhí)行文件

            l -fPIC:表示編譯為位置獨(dú)立的代碼,不用此選項(xiàng)的話編譯后的代碼是位置相關(guān)的所以動(dòng)態(tài)載入時(shí)是通過代碼拷貝的方式來滿足不同進(jìn)程的需要,而不能達(dá)到真正代碼段共享的目的。

            l -L.:表示要連接的庫在當(dāng)前目錄中

            l -ltest:編譯器查找動(dòng)態(tài)連接庫時(shí)有隱含的命名規(guī)則,即在給出的名字前面加上lib,后面加上.so來確定庫的名稱

            l LD_LIBRARY_PATH:這個(gè)環(huán)境變量指示動(dòng)態(tài)連接器可以裝載動(dòng)態(tài)庫的路徑。

            l 當(dāng)然如果有root權(quán)限的話,可以修改/etc/ld.so.conf文件,然后調(diào)用 /sbin/ldconfig來達(dá)到同樣的目的,不過如果沒有root權(quán)限,那么只能采用輸出LD_LIBRARY_PATH的方法了。
            4、注意

            調(diào)用動(dòng)態(tài)庫的時(shí)候有幾個(gè)問題會(huì)經(jīng)常碰到,有時(shí),明明已經(jīng)將庫的頭文件所在目錄 通過 “-I” include進(jìn)來了,庫所在文件通過 “-L”參數(shù)引導(dǎo),并指定了“-l”的庫名,但通過ldd命令察看時(shí),就是死活找不到你指定鏈接的so文件,這時(shí)你要作的就是通過修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件來指定動(dòng)態(tài)庫的目錄。通常這樣做就可以解決庫無法鏈接的問題了。

             ?。常?如果出現(xiàn)下列錯(cuò)誤
                      ./test: error while loading shared libraries: libtest.so: cannot open   shared object file: No such file or directory
                  解決方法:
                  ?。保骸xport LD_LIBRARY_PATH=DIR:$LD_LIBRARY_PATH 
                   2: 修改文件/etc/ld.so.config文件,在末行加上你的庫文件目錄,最后,ldconfig刷新ld.so.cache文件即可??梢杂胹trings命令查看ld.so.cache是否刷新:strings /etc/ld.so.cache | grep print
                 
            4:   ldd命令查看動(dòng)態(tài)連接庫
                        
                        linux-gate.so.1 =>  (0xb7f0e000)
                        libprint.so => not found
                        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d82000)
                        /lib/ld-linux.so.2 (0xb7ef4000)
            5 : nm查看程序中有那些符號(hào)
                  
            049f18 d _DYNAMIC
            08049ff4 d _GLOBAL_OFFSET_TABLE_
            080485cc R _IO_stdin_used
                     w _Jv_RegisterClasses
            08049f08 d __CTOR_END__
            08049f04 d __CTOR_LIST__
            08049f10 D __DTOR_END__
            08049f0c d __DTOR_LIST__
            080485ec r __FRAME_END__
            08049f14 d __JCR_END__
            08049f14 d __JCR_LIST__
            0804a018 A __bss_start
            0804a010 D __data_start
            08048580 t __do_global_ctors_aux
            08048450 t __do_global_dtors_aux

            6: strip取出程序中符號(hào)
            7: strings查看可執(zhí)行文件中的文本信息

            posted @ 2014-01-14 19:29 Enic 閱讀(422) | 評(píng)論 (0)編輯 收藏

            會(huì)遇到若干問題:
            1.編譯缺少lib,使用yum安裝
            2.沒有設(shè)置prefix,不知道安裝到那里
            3.安裝完成直接執(zhí)行g(shù)it無反應(yīng),需要建立軟連接

            make prefix=/usr/local all doc
            make prefix=/usr/local install install-doc
            wget http://git-core.googlecode.com/files/git-1.7.10.tar.gz
            tar zxvf git-1.7.10.tar.gz
            cd git-1.7.10
            ./configure --prefix=/usr/local/git
            make
            make install
            git依賴zlib-devel,openssl-devel,perl,cpio,expat-devel,gettext-devel這些包,如果出錯(cuò)基本上也是這些包造成的。我在安裝時(shí)出現(xiàn)了如下錯(cuò)誤。
             
            出現(xiàn)錯(cuò)誤一:
            usr/bin/perl Makefile.PL PREFIX='/usr/local/git' INSTALL_BASE='' --localedir='/usr/local/git/share/locale'
            Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
            BEGIN failed--compilation aborted at Makefile.PL line 3.
            make[1]: *** [perl.mak] Error 2
            make: *** [perl/perl.mak] Error 2
            執(zhí)行:
            yum install perl-ExtUtils-MakeMaker package.
            行進(jìn)安裝
            出現(xiàn)錯(cuò)誤二:
             /bin/sh: msgfmt: command not found
            yum install gettext-devel
            可解決!
            為了省時(shí)間,你可以利用各distribution的包管理工具來一鍵安裝。若是條件允許,從源代碼安裝有很多好處,至少可以安裝最新的版本。Git 的每個(gè)版本都在不斷嘗試改進(jìn)用戶體驗(yàn),所以能通過源代碼自己編譯安裝最新版本就再好不過了。有些 Linux 版本自帶的安裝包更新起來并不及時(shí),所以除非你在用最新的 distro 或者 backports,那么從源代碼安裝其實(shí)該算是最佳選擇。
            Git 的工作需要調(diào)用 curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。在有 yum 的系統(tǒng)上(比如 Fedora)或者有 apt-get 的系統(tǒng)上(比如 Debian 體系),可以用下面的命令安裝:
            0. Git安裝前環(huán)境配置:
                $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
                $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev 
            1. Git下載源:
                http://git-scm.com/downloads(official website)
                http://code.google.com/p/git-core 
                https://github.com/git/git  (大陸的朋友建議使用后倆個(gè)源下載)
            2. 解壓縮包并進(jìn)入Git目錄:
               $ sudo tar zxf git-1.8.0.tar.gz 
               $ cd git-1.8.0
            3. 編譯源碼:
               $ sudo make prefix=/usr/local/git all doc
               // 這里同時(shí)指定all和doc這兩個(gè)目標(biāo),指定doc是為了安裝git的幫助文檔到man手冊(cè)里面,只指定all的話,默認(rèn)并不包含git的幫助文檔,這樣在man手冊(cè)中就查不到git的幫助。
            *********************************************************************
            在編譯all目標(biāo)時(shí),可能會(huì)報(bào)下面的錯(cuò):
                  /bin/sh: curl-config: not found
                  fatal error: openssl/ssl.h: No such file or directory
               這是因?yàn)間it源碼需要的一些開發(fā)包沒有被安裝。我是通過安裝下面的包來解決這個(gè)問題的:
               $ sudo yum install libcurl4-openssl-dev
               網(wǎng)上有個(gè)方法是安裝libssl-dev包,這個(gè)方法可以解決 fatal error: openssl/ssl.h: No such file or directory 的問題,但是/bin/sh: curl-config: not found問題還是存在,編譯的時(shí)候還是編不過。在我的機(jī)子上,安裝libcurl4-openssl-dev能同時(shí)解決這兩個(gè)問題,安裝libcurl4-openssl-dev時(shí),會(huì)自動(dòng)安裝libssl-dev包。
            在編譯doc目標(biāo)時(shí),可能會(huì)報(bào)下面的錯(cuò):
                        /bin/sh: line 1: asciidoc: command not found
               這個(gè)包可以到這里下載并執(zhí)行make(./configure ;make ;make install)常用方法安裝http://sourceforge.net/projects/asciidoc
            /bin/sh: line 1: xmlto: command not found 
               xmlto這個(gè)包不太好找,不過有adam在,這些都是浮云(呵呵)。下載地址:https://fedorahosted.org/releases/x/m/xmlto/,安裝方法同asciidoc。
            ************************************************************************
            4. 安裝:
               $ sudo make prefix=/usr/local/git install install-doc
               // 這里同樣,如果想要在man手冊(cè)中看到git的幫助文檔,需要額外安裝,即上面的install-doc。如果只指定install目標(biāo)的話,在man手冊(cè)中是查不到git的相關(guān)命令幫助的。
            5. 查看新安裝的git版本號(hào):
               $ ./usr/local/git/bin/git --version
               git version 1.8.0
            6. 為了以后使用方便,我們這里做一個(gè)軟連接:
               $ ln -s /usr/local/git/bin/* /usr/bin/
               
               
            =================================================
            極速安裝git最新版(update 20131209):
            $ git clone git://git.kernel.org/pub/scm/git/git.git
            $ make prefix=/usr/local all        (編譯)
            $ sudo make prefix=/usr/local install       (安裝)
            =================================================
            posted @ 2014-01-14 16:26 Enic 閱讀(12402) | 評(píng)論 (0)編輯 收藏

            yum install ibug
            reboot以后就可以看到:

            1.需要root權(quán)限,所以要用root登錄 ,或su root

            2.yum install "@Chinese Support"

            3.exit

            4.回到桌面,system->preferences->input method

            5.如果沒有,先注銷一下。

            6.按照提示添加輸入法。

            7.最后 再次注銷,登錄即可。


            設(shè)置:

            在linux CentOS中安裝完中文輸入法之后,還不能使用,必須進(jìn)行相應(yīng)的設(shè)置,就如同在windows中設(shè)置中文輸入法一樣,必須把剛剛安裝的輸入法添加愛到輸入法列表中。

            1、點(diǎn)擊:系統(tǒng)---首選項(xiàng)---輸入法

            2、勾選啟用輸入法特性

            3、點(diǎn)擊首選輸入法

                 在常規(guī)選項(xiàng)卡中可以設(shè)置輸入法切換的快捷鍵

            4、點(diǎn)擊輸入法選項(xiàng)卡,選擇漢語,在列表中選擇拼音(當(dāng)然,你會(huì)其他的輸入法也可以選擇其他的)

                  點(diǎn)擊添加,將選中的輸入法添加到輸入法列表

            5、點(diǎn)擊高級(jí)選項(xiàng)卡,勾選鍵盤布局、全局輸入法設(shè)置。關(guān)閉。




            1.需要root權(quán)限,所以要用root登錄 ,或su root

            2.yum install "@Chinese Support"

            3.exit

            4.回到桌面,system->preferences->input method

            5.如果沒有,先注銷一下。

            6.按照提示添加輸入法。

            7.最后 再次注銷,登錄即可。


            設(shè)置:

            在linux CentOS中安裝完中文輸入法之后,還不能使用,必須進(jìn)行相應(yīng)的設(shè)置,就如同在windows中設(shè)置中文輸入法一樣,必須把剛剛安裝的輸入法添加愛到輸入法列表中。

            1、點(diǎn)擊:系統(tǒng)---首選項(xiàng)---輸入法

            2、勾選啟用輸入法特性

            3、點(diǎn)擊首選輸入法

                 在常規(guī)選項(xiàng)卡中可以設(shè)置輸入法切換的快捷鍵

            4、點(diǎn)擊輸入法選項(xiàng)卡,選擇漢語,在列表中選擇拼音(當(dāng)然,你會(huì)其他的輸入法也可以選擇其他的)

                  點(diǎn)擊添加,將選中的輸入法添加到輸入法列表

            5、點(diǎn)擊高級(jí)選項(xiàng)卡,勾選鍵盤布局、全局輸入法設(shè)置。關(guān)閉。



            posted @ 2014-01-14 14:17 Enic 閱讀(911) | 評(píng)論 (0)編輯 收藏

            最優(yōu)的設(shè)置應(yīng)該是net方式,最簡(jiǎn)單的方式應(yīng)該是是bridge方式。
            net方式的優(yōu)勢(shì)在于不收host機(jī)器網(wǎng)絡(luò)環(huán)境變化印象,這次是vm10下做的配置,修改以后發(fā)現(xiàn)都ping不通vm網(wǎng)關(guān),但是機(jī)器相互可以ping

            vmware三種網(wǎng)絡(luò)連接上網(wǎng)設(shè)置:

            虛擬機(jī)更改ip地址的命令:

            sudo /root/bin/newIP  <new-AES-IP> <networkMASK> <Gateway> <DNServer>

            1.bridge :  
            默認(rèn)使用vmnet0
            將虛擬機(jī)的ip設(shè)置與主機(jī)同網(wǎng)段未使用ip,其余與主機(jī)相同:
            例如主機(jī)ip是10.70.54.31,設(shè)置虛擬機(jī)ip為10.70.54.22。netmask,broadcast,gateway,dns都與主機(jī)相同即可實(shí)現(xiàn)虛擬機(jī)<--->主機(jī) 虛擬機(jī)<---->互聯(lián)網(wǎng) 通信。

            2.nat :
            默認(rèn)使用vmnet8
            將虛擬機(jī)設(shè)置成使用dhcp方式上網(wǎng),windows下選擇"自動(dòng)獲取ip",linux下開啟dhcp服務(wù)即可
            也可以手動(dòng)設(shè)置:
            ip設(shè)置與vmnet8同網(wǎng)段,gateway設(shè)置成vmnet8的gateway(/etc/vmware/vmnet8/nat/nat.conf)中可以查到vmnet8的gateway,通常是xxx.xxx.xxx.2。
            netmask,broadcast設(shè)置與vmnet8相同,dns設(shè)置與主機(jī)相同。
            例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2
            虛擬機(jī)設(shè)置: ip :172.16.249.100  gw: 172.16.249.2

            3.host-only :
            默認(rèn)使用vmnet1

            將虛擬機(jī)ip設(shè)置與vmnet1同網(wǎng)段,gateway設(shè)置成vmnet1的ip,其余設(shè)置與vmnet1相同,dns設(shè)置與主機(jī)相同
            例如 vmnet1 ip :172.16.245.1 
            虛擬機(jī)設(shè)置: ip :172.16.245.100 gateway :172.16.245.1 
            這樣就實(shí)現(xiàn)了虛擬機(jī)<--->主機(jī) 通信,但是 虛擬機(jī)<--->互聯(lián)網(wǎng) 仍無法通信

            虛擬機(jī)與互聯(lián)網(wǎng)通信: 
            1.開啟主機(jī)路由功能
            2.設(shè)定iptables,使主機(jī)成為一臺(tái)nat server
            1. echo 1 >/proc/sys/net/ipv4/ip_forward 這樣就主機(jī)就具有了路由功能
            2. iptables -t nat -A POSTROUTING -o eth0 -s 172.16.245.0/24 -j MASQUERADE
            這條規(guī)則意思是將來自172.16.245.0/24封包的來源ip偽裝成eth0的ip,實(shí)現(xiàn)虛擬機(jī)與互聯(lián)網(wǎng)通信
            如果網(wǎng)絡(luò)接口是ppp+或pppoe則需要修改成-o pppoe  
            當(dāng)然-s  172.16.245.0/24 也要根據(jù)實(shí)際情況修改

            posted @ 2014-01-14 13:42 Enic 閱讀(228) | 評(píng)論 (0)編輯 收藏

            1.理解locale和export命令
            2.了解怎么讓bash登錄以后自動(dòng)執(zhí)行一段命令


            在/etc/profile文件里添加

            source $HOME/.bashrc

             

            總之就是為了在登錄cygwin時(shí),加載~/.bashrc


            posted @ 2014-01-13 18:04 Enic 閱讀(325) | 評(píng)論 (0)編輯 收藏

            1. 在域里建立一個(gè)賬戶test

            2. 在需要ssh登錄的主機(jī)上,配置好cygwin和sshd.

            3.使用mkpasswd -l > /etc/passwd 來建立local password條目,

            3.是用mkpasswd -d -u 123456 >> /etc/passwd 在passwd里追加一個(gè)域用戶. -d 表示domain

            4.mkgroup -d >> /etc/group,把用戶所在的組gid也添加進(jìn)去.

            5.運(yùn)用mkpasswd來添加用戶,本地的和域的都可以,用mkgroup添加用戶相應(yīng)的組信息.

            6.域用戶如果在本地組里,這樣混合一起用是可以的啦.
            posted @ 2014-01-13 17:36 Enic 閱讀(179) | 評(píng)論 (0)編輯 收藏

            現(xiàn)象:
            切換到unicode編譯以后發(fā)現(xiàn)款字符的中文全部無法輸出,查詢以后是Locale引起的,首先用SetLocal設(shè)置程序local發(fā)現(xiàn)無效,最后定位到log4cplus配置文件:
            log4cplus.appender.complete.Locale=chs
            這樣設(shè)置之后發(fā)現(xiàn)尼瑪還是不行,繼續(xù)分析,發(fā)現(xiàn)是filename的中文部分被截?cái)嗔恕?br />
            然后對(duì)log4cplus的代碼動(dòng)手,__FILENAME__改成LOG4CPLUS_TEXT(__FILENAME__),修改一對(duì)錯(cuò)誤之后發(fā)現(xiàn)勉強(qiáng)可以用了,但還是有缺陷,早日自己動(dòng)手寫才是王道,,,
            posted @ 2014-01-13 09:54 Enic 閱讀(1619) | 評(píng)論 (1)編輯 收藏

            僅列出標(biāo)題
            共22頁: First 9 10 11 12 13 14 15 16 17 Last 
            久久精品无码一区二区app| 2021国内久久精品| 中文字幕热久久久久久久| 久久婷婷综合中文字幕| 久久久久高潮毛片免费全部播放| 久久成人小视频| 国产精品久久久香蕉| 久久久久久国产a免费观看黄色大片 | 久久天天婷婷五月俺也去| 久久精品18| 久久久久亚洲AV无码去区首| 国产91色综合久久免费| 国产高潮国产高潮久久久| 国产精品美女久久久久网| 国产精品久久久福利| 久久综合综合久久97色| 国产 亚洲 欧美 另类 久久| 亚洲一本综合久久| 国内精品久久久久久久涩爱 | 97精品久久天干天天天按摩| 伊人久久大香线蕉综合Av| 一本色道久久88精品综合| 久久久久国产精品人妻| 久久久久久久亚洲Av无码| 99国产精品久久| 欧美久久亚洲精品| 亚洲精品午夜国产VA久久成人| 久久中文娱乐网| 亚洲色欲久久久久综合网| 久久久久久人妻无码| 久久精品国产国产精品四凭| 97精品伊人久久大香线蕉| 久久国产精品免费一区二区三区| 精品久久久久成人码免费动漫 | 久久国产成人精品国产成人亚洲| 亚洲人成无码久久电影网站| 国产精品久久国产精麻豆99网站| 久久久久亚洲AV成人网人人网站| 91精品久久久久久无码| 久久99久国产麻精品66| 亚洲伊人久久综合影院|