<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    在linux下如何編譯C++程序

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    一、GCC(GNU Compiler Collection)是linux下最主要的編譯工具,GCC不僅功能非常強大,結構也異常靈活。它可以通過不同的前端模塊來支持各種語言,如Java、Fortran、Pascal、Modula-3和Ada

             g++是GCC中的一個工具,專門來編譯C++語言的。

             GCC的參數有:( 也是分步實現)

                                      -E  讓GCC在預處理結束后停止編譯  g++ -E hello.cpp  -o  hello.i

                                       -c  將hello.i編譯成目標代碼 g++  -c  hello.i  -o  hello.o

                                       將目標文件連接成可執行文件   g++ hell.o   -o   hello

               可以一步實現   g++  hello.cpp  -o  hello

     

    二、假如有兩個以上源文件應該一下編譯。

             一步就實現      g++   foo1.cpp   foo2.cpp   -o   foo

            也可以分步實現   g++   -c   foo1.cpp  -o   foo1.o

                                           g++   -c    foo2.cpp  -o   foo2.o

                                           g++   foo1.o  foo2.o    -o    foo

    三、GCC一些常用選項

             1、產生警告信息的選項大多數以-W開頭  其中有-Wall

                  g++  -Wall  hello.cpp   -o   hello

             2、將所有的警告當成錯誤的選項-Werror

                   g++ -Werror  hello.cpp  -o  hello

              3、尋找頭文件選項 -I    (linux默認路徑:頭文件在/usr/include/下),不在這個路徑下就要用-I指定。

                  gcc  foo.cpp  -I/home/include   -o  foo

              4、 庫依賴選項     -L      (linux默認路徑:庫文件在/usr/lib/下),不在這個路徑下就要用-L指定。

                    g++  foo.cpp  -L/home/lib  -lfoo  -o   foo

                   庫就是將源文件編譯之后生成的目標文件的集合。

                   庫命名以lib開頭。

                    庫有靜態庫(通常以.a結尾)和動態庫(通常以.so結尾)

                    默認情況下,g++以動態庫形式連接。如果要靜態庫連接則要用-static指定(g++ foo.cpp  -L/home/lib  -static  -lfoo  -o  foo)

              5、優化選項  -On  (n取0到3之間)

     

    四、介紹一些GNU 二進制鏈工具

              1、ar命令(也稱為工具)   可以用來編譯成靜態庫

                  ar  [-] {操作選項} {任選項} [成員名] [count] archive files....

                  ar r v  libtest.a  hello.o  hello1.o  生成一個庫名為test,該庫中存放了hello.o和hello1.o這兩個模塊。

                   操作項:d (刪除)、  m(移動)、p(標準輸出)、q(快速追加)、r(在庫中插入模塊)、t(顯示庫的模塊清單)、x(從庫中提取一個成員)。

                  任選項:a(成員后面添加一個新文件)、b(成員前面添加一個新文件)、c(創建一個庫)、f(截短指定名字)、v(顯示執行操作選項的附加信息)。

              2、編譯成動態庫

                   分步完成: gcc  -fPIC  -c  func.cpp  -o  func.o

                                         gcc -shared  -o  libfunc.so  func.o

                   一步就完成:gcc -fPIC  -shared -o libfunc.so  func.cpp

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全