【Linux】 C++編程(vim)

來源:互聯網
上載者:User

一,編譯(compile)

         含義:用編譯器(compile)將原始碼產生二進位目標檔案。在Window下為.obj。在Linux下為.o檔案。

         要求:編譯器要求,文法正確。編譯器只檢測程式文法和函數、變數是否被聲明,函數並不許要被定義。

         編譯文法:g++  -c  file.cpp  其中-c 為compile產生 file.o的目標檔案

二,連結(link)

        含義:將所有需要到函數所在的檔案愛你連結在一起合成為可執行檔。

        文法:g++  file.o -o  file.exe  其中-o 指產生可執行檔(output)。預設為a.out

      【合并】g++  file.cpp  -o  file.exe

三,庫(library)

       含義:對於一個源檔案很多的大項目,為了避免重複編譯,也為了方便編譯器連結,通常會把一些常用到的目標檔案打包(archive),於是就成為了傳說中的庫檔案(library)。在Windows下這種包叫“庫檔案”(Library File),也就是 .lib 檔案,在UNIX下,是Archive File,也就是 .a 檔案

       文法:1)ar -- create, modify, and extract from archives.
                        @Usage: ar cr lib****.a file1.o file2.o   // **** 為自訂的庫檔案名稱。
                       標籤 c (create):如果庫不存在,則建立庫;
                       標籤 r (replace):如果庫中已存在要添加的對象檔案,則舊的對象檔案將被替換。

實際上 ar 只是一個打包工具,是archive(打包)的首字母。它將一系列的目標檔案首位串連在一起,並內嵌一個索引表,使得編譯器能夠方便地找到所需要的函數。一般來說,由於函數索引表的存在,對庫的連結要比對一般的對象檔案的連結更快。如果 ar 未能完成此項索引表工作,還可以手動用以下的 ranlib 命令建立索引表。

                  2) ranlib -- generate index to archive.
                  @Usage: ranlib lib****.a

                  3) nm -- list symbols from object files.

                  nm可以用來顯示 ranlib 所構建的索引表。你將會看到所有庫裡的函數名(除了模板函數template function)。

四, 在編譯時間連結庫

建立了自己的庫,以後要用到相關函數的時候,只需在代碼中聲明所要用的函數(必須和庫中定義得相同)。在連結的時候,需要給出庫的名稱和位置:

g++ file1.o file2.o -o program.exe -L**** -l****

-L 後緊跟庫檔案所在的目錄位址,-l 後緊跟庫名。

編譯器在連結的時候會在所指定的目錄位址下尋找名為 lib****.a 的庫檔案。



 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.