• <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++博客 首頁 新隨筆 聯系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

            #

                 摘要: date顯示時間tsselect設置時區本文是基本是[Linux的時間設置與同步(NTP)]的原文,只在一些地方更新和完善了一下。  一、時間和時區  如果有人問你說現在幾點? 你看了看表回答他說晚上8點了. 這樣回答看上去沒有什么問題,但是如果問你的這個人在歐洲的話那么你的回答就會讓他很疑惑,因為他那里還太陽當空呢.  這里就有產生了一個如何定義時間的問題. 因為在地球環繞太陽旋轉的24個小時中...  閱讀全文
            posted @ 2014-01-15 13:58 Enic 閱讀(293) | 評論 (0)編輯 收藏

            實際上我就是用默認的bjam install,偷懶了,,,
            linux默認頭文件會放到/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. 進入/usr/local/boost-1_52_0/ 目錄, 在terminal中輸入
                         ./bootstrap.sh
            4.進入/usr/local/boost-1_52_0/ 目錄,在terminal中輸入
                        sudo ./bjam  --layout=versioned --build-type=complete --toolset=gcc install 
            5.添加環境變量(剛改完要重啟或者注銷一下來更新剛修改過的環境變量)
               兩種方法:
               (1)修改/etc/profie文件 末尾添加
                        export BOOST_INCLUDE=/usr/local/include/boost-1_52
                        export BOOST_LIB=/usr/local/lib
                (2)在/etc/profile.d/ 中新建一個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  
            然后進入解壓縮后的文件夾編譯boost的編譯器jam 
            cd boost_1_44_0\tools\jam 
            ./build_dist.sh 
            編譯完后在這個目錄下有編譯出的bjam文件 
            boost_1_44_0\tools\jam\stage\bin.linuxx86 
            把它copy到boost_1_44_0 然后在這個目錄下運行命令編譯: 
            ./bjam "-sTOOLS=gcc" "--includedir=/usr/include" "--libdir=/usr/lib/boost" install 
            ./bjam --toolset=gcc --includedir=/usr/local/include --libdir=/usr/local/lib/boost install 
            開始編譯,等待編譯完成,需很長時間。 
            關于bjam的后面的參數的設置: 
            -sTOOLS=gcc  指定編譯器為GCC 
            --includedir=/usr/include/  指定頭文件的安裝目錄,我安裝在/usr/include下。如果安裝成功,將在/usr/include/生成目錄boost_1_33,該目錄下就是boost的頭文件目錄 
            --libdir=/usr/lib/boost  指定boost的庫文件的存放位置, 生成的 .a .so 文件將放在該目錄下 
            install 編譯并安裝boost
            3.注意事項 
            安裝完成后,為了每次使用時不用輸入太多的目錄,可以在/etc/profile中加入: 
            BOOST_INCLUDE=/usr/include/boost 
            BOOST_LIB=/usr/lib/boost 
            export BOOST_INCLUDE BOOST_LIB 
            以后在編譯程序時,只需要用:-I$BOOST_INCLUDE -L$BOOST_LIB 即可,還要使用-l指定了鏈接庫。 
            也許會出現編譯時或者運行時找不到動態庫(*.so)的錯誤 
            把/usr/lib/boost追加到動態鏈接庫配置文件/etc/ld.so.conf中,然后直接運行ldconfig,即可! 
            {僅測試成功一次的方式:./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更新一下。 
            在編譯程序時直接用g++ re.cpp -lboost_regex -o re即可!} 
            4.Boost庫的使用舉例 
            第一個測試文件是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 
            運行:./lex 
            輸出: 
            123 
            123.12 
            我們的第二個例子是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運行:./re輸出: 
            who 
            lives 
            in 
            pineapple 
            under 
            the 
            sea? 
            附注:為了讓動態鏈接庫為系統所共享,還需運行動態鏈接庫的管理命令--ldconfig 
            ldconfig 命令的用途,主要是在默認搜尋目錄(/lib和/usr/lib)以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態 鏈接庫(格式如前介紹,lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件.緩存文件默認為 /etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表.
            posted @ 2014-01-15 13:43 Enic 閱讀(1186) | 評論 (0)編輯 收藏

            1.linux動態鏈接庫管理機制和win比起來只是半成品

            2.luabind對函數綁定太敏感了,返回值少了一個&就直接罷工了

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

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

            好吧,都是可以控制的


            靜態庫:

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

            動態鏈接庫的創建

             由于動態鏈接庫函數的共享特性,它們不會被拷貝到可執行文件中。在編譯的時候,編譯器只會做一些函數名之類的檢查。在程序運行的時候,被調用的動態鏈接庫函數被安置在內存的某個地方,所有調用它的程序將指向這個代碼段。因此,這些代碼必須實用相對地址,而不是絕對地址。在編譯的時候,我們需要告訴編譯器,這些對象文件是用來做動態鏈接庫的,所以要用地址不無關代碼(Position Independent Code (PIC))。

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

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

             這與靜態庫的實用基本一樣,用的是 -Lpath 和 -lxxx 標簽。如:

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

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

             在程序運行期間,也需要告訴系統去哪里找你的動態鏈接庫文件。在UNIX下是通過定義名為 LD_LIBRARY_PATH 的環境變量 來實現的。只需將path賦值給此變量即可。csh 命令為:

             setenv LD_LIBRARY_PATH your/full/path/to/dll

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

             ldd program.exe

             

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

            實例分析:
            1、動態庫的編譯

            下面通過一個例子來介紹如何生成一個動態庫。這里有一個頭文件:so_test.h,三個.c文件:test_a.c、test_b.c、test_c.c,我們將這幾個文件編譯成一個動態庫: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");
            }

            將這幾個文件編譯成一個動態庫:libtest.so
            $ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

            2、動態庫的鏈接

            在1、中,我們已經成功生成了一個自己的動態鏈接庫libtest.so,下面我們通過一個程序來調用這個庫里的函數。程序的源文件為:test.c。

            test.c:

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

            }

            l 將test.c與動態庫libtest.so鏈接生成執行文件test:

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

            l 測試是否動態連接,如果列出libtest.so,那么應該是連接正常了

            $ ldd test

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

            l -fPIC:表示編譯為位置獨立的代碼,不用此選項的話編譯后的代碼是位置相關的所以動態載入時是通過代碼拷貝的方式來滿足不同進程的需要,而不能達到真正代碼段共享的目的。

            l -L.:表示要連接的庫在當前目錄中

            l -ltest:編譯器查找動態連接庫時有隱含的命名規則,即在給出的名字前面加上lib,后面加上.so來確定庫的名稱

            l LD_LIBRARY_PATH:這個環境變量指示動態連接器可以裝載動態庫的路徑。

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

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

              3: 如果出現下列錯誤
                      ./test: error while loading shared libraries: libtest.so: cannot open   shared object file: No such file or directory
                  解決方法:
                   1: export LD_LIBRARY_PATH=DIR:$LD_LIBRARY_PATH 
                   2: 修改文件/etc/ld.so.config文件,在末行加上你的庫文件目錄,最后,ldconfig刷新ld.so.cache文件即可。可以用strings命令查看ld.so.cache是否刷新:strings /etc/ld.so.cache | grep print
                 
            4:   ldd命令查看動態連接庫
                        
                        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查看程序中有那些符號
                  
            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取出程序中符號
            7: strings查看可執行文件中的文本信息

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

            會遇到若干問題:
            1.編譯缺少lib,使用yum安裝
            2.沒有設置prefix,不知道安裝到那里
            3.安裝完成直接執行git無反應,需要建立軟連接

            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這些包,如果出錯基本上也是這些包造成的。我在安裝時出現了如下錯誤。
             
            出現錯誤一:
            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
            執行:
            yum install perl-ExtUtils-MakeMaker package.
            行進安裝
            出現錯誤二:
             /bin/sh: msgfmt: command not found
            yum install gettext-devel
            可解決!
            為了省時間,你可以利用各distribution的包管理工具來一鍵安裝。若是條件允許,從源代碼安裝有很多好處,至少可以安裝最新的版本。Git 的每個版本都在不斷嘗試改進用戶體驗,所以能通過源代碼自己編譯安裝最新版本就再好不過了。有些 Linux 版本自帶的安裝包更新起來并不及時,所以除非你在用最新的 distro 或者 backports,那么從源代碼安裝其實該算是最佳選擇。
            Git 的工作需要調用 curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。在有 yum 的系統上(比如 Fedora)或者有 apt-get 的系統上(比如 Debian 體系),可以用下面的命令安裝:
            0. Git安裝前環境配置:
                $ 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  (大陸的朋友建議使用后倆個源下載)
            2. 解壓縮包并進入Git目錄:
               $ sudo tar zxf git-1.8.0.tar.gz 
               $ cd git-1.8.0
            3. 編譯源碼:
               $ sudo make prefix=/usr/local/git all doc
               // 這里同時指定all和doc這兩個目標,指定doc是為了安裝git的幫助文檔到man手冊里面,只指定all的話,默認并不包含git的幫助文檔,這樣在man手冊中就查不到git的幫助。
            *********************************************************************
            在編譯all目標時,可能會報下面的錯:
                  /bin/sh: curl-config: not found
                  fatal error: openssl/ssl.h: No such file or directory
               這是因為git源碼需要的一些開發包沒有被安裝。我是通過安裝下面的包來解決這個問題的:
               $ sudo yum install libcurl4-openssl-dev
               網上有個方法是安裝libssl-dev包,這個方法可以解決 fatal error: openssl/ssl.h: No such file or directory 的問題,但是/bin/sh: curl-config: not found問題還是存在,編譯的時候還是編不過。在我的機子上,安裝libcurl4-openssl-dev能同時解決這兩個問題,安裝libcurl4-openssl-dev時,會自動安裝libssl-dev包。
            在編譯doc目標時,可能會報下面的錯:
                        /bin/sh: line 1: asciidoc: command not found
               這個包可以到這里下載并執行make(./configure ;make ;make install)常用方法安裝http://sourceforge.net/projects/asciidoc
            /bin/sh: line 1: xmlto: command not found 
               xmlto這個包不太好找,不過有adam在,這些都是浮云(呵呵)。下載地址:https://fedorahosted.org/releases/x/m/xmlto/,安裝方法同asciidoc。
            ************************************************************************
            4. 安裝:
               $ sudo make prefix=/usr/local/git install install-doc
               // 這里同樣,如果想要在man手冊中看到git的幫助文檔,需要額外安裝,即上面的install-doc。如果只指定install目標的話,在man手冊中是查不到git的相關命令幫助的。
            5. 查看新安裝的git版本號:
               $ ./usr/local/git/bin/git --version
               git version 1.8.0
            6. 為了以后使用方便,我們這里做一個軟連接:
               $ 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 閱讀(12405) | 評論 (0)編輯 收藏

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

            1.需要root權限,所以要用root登錄 ,或su root

            2.yum install "@Chinese Support"

            3.exit

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

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

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

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


            設置:

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

            1、點擊:系統---首選項---輸入法

            2、勾選啟用輸入法特性

            3、點擊首選輸入法

                 在常規選項卡中可以設置輸入法切換的快捷鍵

            4、點擊輸入法選項卡,選擇漢語,在列表中選擇拼音(當然,你會其他的輸入法也可以選擇其他的)

                  點擊添加,將選中的輸入法添加到輸入法列表

            5、點擊高級選項卡,勾選鍵盤布局、全局輸入法設置。關閉。




            1.需要root權限,所以要用root登錄 ,或su root

            2.yum install "@Chinese Support"

            3.exit

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

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

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

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


            設置:

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

            1、點擊:系統---首選項---輸入法

            2、勾選啟用輸入法特性

            3、點擊首選輸入法

                 在常規選項卡中可以設置輸入法切換的快捷鍵

            4、點擊輸入法選項卡,選擇漢語,在列表中選擇拼音(當然,你會其他的輸入法也可以選擇其他的)

                  點擊添加,將選中的輸入法添加到輸入法列表

            5、點擊高級選項卡,勾選鍵盤布局、全局輸入法設置。關閉。



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

            最優的設置應該是net方式,最簡單的方式應該是是bridge方式。
            net方式的優勢在于不收host機器網絡環境變化印象,這次是vm10下做的配置,修改以后發現都ping不通vm網關,但是機器相互可以ping

            vmware三種網絡連接上網設置:

            虛擬機更改ip地址的命令:

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

            1.bridge :  
            默認使用vmnet0
            將虛擬機的ip設置與主機同網段未使用ip,其余與主機相同:
            例如主機ip是10.70.54.31,設置虛擬機ip為10.70.54.22。netmask,broadcast,gateway,dns都與主機相同即可實現虛擬機<--->主機 虛擬機<---->互聯網 通信。

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

            3.host-only :
            默認使用vmnet1

            將虛擬機ip設置與vmnet1同網段,gateway設置成vmnet1的ip,其余設置與vmnet1相同,dns設置與主機相同
            例如 vmnet1 ip :172.16.245.1 
            虛擬機設置: ip :172.16.245.100 gateway :172.16.245.1 
            這樣就實現了虛擬機<--->主機 通信,但是 虛擬機<--->互聯網 仍無法通信

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

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

            1.理解locale和export命令
            2.了解怎么讓bash登錄以后自動執行一段命令


            在/etc/profile文件里添加

            source $HOME/.bashrc

             

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


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

            1. 在域里建立一個賬戶test

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

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

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

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

            5.運用mkpasswd來添加用戶,本地的和域的都可以,用mkgroup添加用戶相應的組信息.

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

            現象:
            切換到unicode編譯以后發現款字符的中文全部無法輸出,查詢以后是Locale引起的,首先用SetLocal設置程序local發現無效,最后定位到log4cplus配置文件:
            log4cplus.appender.complete.Locale=chs
            這樣設置之后發現尼瑪還是不行,繼續分析,發現是filename的中文部分被截斷了。

            然后對log4cplus的代碼動手,__FILENAME__改成LOG4CPLUS_TEXT(__FILENAME__),修改一對錯誤之后發現勉強可以用了,但還是有缺陷,早日自己動手寫才是王道,,,
            posted @ 2014-01-13 09:54 Enic 閱讀(1627) | 評論 (1)編輯 收藏

            僅列出標題
            共22頁: First 9 10 11 12 13 14 15 16 17 Last 
            久久成人精品视频| 国产精品VIDEOSSEX久久发布| 亚洲人成无码网站久久99热国产 | 国产一区二区精品久久凹凸| 99久久精品无码一区二区毛片| 亚洲综合婷婷久久| 亚洲精品成人网久久久久久| 人妻无码中文久久久久专区| 美女写真久久影院| 久久天天躁夜夜躁狠狠躁2022| 无码人妻精品一区二区三区久久| 久久se精品一区精品二区| 精品国产日韩久久亚洲| 久久久久女人精品毛片| 少妇久久久久久被弄到高潮| 国内精品人妻无码久久久影院| 国产高潮久久免费观看| 亚洲精品美女久久777777| 国产69精品久久久久99| 九九精品99久久久香蕉| 久久精品国产AV一区二区三区| 久久精品国产亚洲网站| 色综合久久中文字幕无码| 久久av高潮av无码av喷吹| 久久国产免费观看精品| 亚洲va久久久噜噜噜久久天堂| 久久久久久亚洲精品无码| 久久青青草原综合伊人| 国产精品对白刺激久久久| 无码精品久久久久久人妻中字| 中文精品99久久国产| 人人狠狠综合久久亚洲| 久久久中文字幕| 亚洲伊人久久大香线蕉苏妲己| 999久久久无码国产精品| 国产V综合V亚洲欧美久久| 国产成人精品三上悠亚久久| 久久久久亚洲精品日久生情| 99久久精品国产一区二区| 久久国产AVJUST麻豆| 久久热这里只有精品在线观看|