1. 程式人生 > >在linux下如何編譯C++程式

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

一、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

相關推薦

linux編譯C++程式

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

linux環境編譯C++ 程式

在linux環境下編譯C++ 程式 單個原始檔生成可執行程式 下面是一個儲存在檔案 helloworld.cpp 中一個簡單的 C++ 程式的程式碼: 單個原始檔生成可執行程式 /* helloworld.cpp */ #include <iostream> int main

linux編譯c語言教程

準備工作 - Linux系統 - 懂得Linux系統下編輯器vim/vi軟體的使用 - 懂得簡易的c語言程式設計(初次學習的同學可以直接複製文章末尾的原始碼) 總結一下:有Linux系統,會使用Linux系統下的文字編輯器,有一點c語言基礎即可。 建立c語言檔案並編譯

linux 執行C程式

#include<stdio.h> int main(){ int a=100,b=25; if(a>b) printf(" The high value is %d\n",a); else printf(" Th

LINUX編譯c++11的程式碼

 C++11,(即ISO/IEC 14882:2011),是目前的C++程式語言的最新正式標準。它取代了第二版標準(第一版公開於1998年,第二版於2003年更新,分別通稱C++98以及C++03,兩者差異很小)。新的標準包含核心語言的新機能,而且擴充套件C++標準程式庫。C++11新標準

Linux執行c++程式

1.建立hello.cpp檔案 vi hello.cpp 2.程式程式碼 #include<iostream> using namespace std; int main() { cout << "Hello World!" << endl;

Linux編譯C++ 指令

單個原始檔生成可執行程式 下面是一個儲存在檔案 helloworld.cpp 中一個簡單的 C++ 程式的程式碼: /* helloworld.cpp */ #include <iostream> int main(int argc,char *ar

LinuxC++程式:統計一個目錄及其內部檔案總共佔據的空間大小

統計一個目錄的大小(byte數),最簡單的辦法是在控制檯輸入命令: du -sb 目錄地址 用C++實現這個功能,是通過遞迴遍歷目錄下的檔案和子目錄達到的。需要注意的是,因為Byte數過大,單用一個整型統計Byte的數量,遇到大一些的目錄會出現溢位。因此我採用了TB、GB、MB、KB和Byte五個層級來表

Linux 編譯C++/C以及常用的幾種命令(ubuntu)

安裝命令:sudo apt-get install build-essential sudo apt-get install gcc sudo apt-get install g++ C的編譯執行 現在我們在文字編輯器裡寫一個C的簡單的程式(好像所有學習C或者C++的書都會出現)#include <s

Linux編寫c程式使輸入的密碼不回顯問題

#include <stdio.h> #include <termios.h> #include <unistd.h> #include <errno.h>

linux使用C++程式操作檔案的讀寫(複製/拷貝)

注意:在linux下使用eclipse+CDT執行下面的程式時,請在root狀態下!!!在終端中,進入root狀態,然後在root狀態下,開啟eclipse,再執行下面的程式。(因為涉及到檔案讀寫許可權,普通狀態可能無法完成操作,root狀態下會更好一些。)一.關於檔案操作的

ubuntu編譯c程式的詳解

1、c語言中的各種字尾名代表的意思: .a檔案代表的是靜態庫 .c代表c原始碼 .h代表c原始碼標頭檔案 .i代表的是c原始碼(這是被預處理過後的結果) .o物件檔案 .s組合語言的程式碼 .so動態庫 2、c語言程式從原始碼到生成可執行檔案的過程:c程式原始碼(.c檔案)

linux執行C程式

工具 1.1 Gedit是一個簡單實用的文字編輯器,擁有漂亮的介面,支援語法高亮,比 Vim 更易上手。 1.2 GCC是Linux下使用最廣泛的C/C++編譯器是,大多數的Linux發行版本都預

linux編譯安裝程式的路徑說明

在Makefile中,安裝目錄同樣需要使用變數來指定,這樣就可以很方便的修改檔案 的安裝路徑。安裝目錄的標準命名下邊將一一介紹。這些變數基於標準的檔案系統結構,這些變數的變種在SVR4、4.4BSD、Linux、Ultrix v4以及其它現代作業系統中都有使用。 安裝者

把電腦虛擬機器linux編譯程式燒寫到ARM9開發板的linux系統裡面的具體操作步驟

首先在Linux虛擬機器下操作的: ①、cd /mnt/hgfs/share(share是在VM裡面設定的Linux虛擬機器和Windows共享的資料夾) ②、cd ZigbeeCom (到該資料夾下面看一下只有那四個檔案) ③、make (make編譯之後就會生成Zigb

VS2008編譯C++程式,找不到 stdint.h,原因及解決方案

來源:http://www.cnblogs.com/verygis/archive/2012/04/22/2465561.html 在 VS2008 下編譯c++程式,發現找不到 stdint.h,最後發現原因如下: Visual Studio 2003 - 2008

【EOS學習筆記(一)】linuxC++程式設計師的春天,附EOS環境安裝詳細步驟

在參加了4月28日柏鏈道捷組織的EOS沙龍後,對linux下c/c++程式設計師來說,彷彿深夜裡點亮了一盞明燈,EOS在6月份主網上線,目前智慧合約只能使用c/c++編寫,門檻不低,而且需要使用很多unix命令,這個對linux程式設計師來說簡直就是量身打造的!      學

使用cl.exe在windows控制檯編譯C++程式

工具 cl.exe 是控制 Microsoft C 和 C++ 編譯器與連結器的 32 位工具。編譯器將.cpp編譯,生成中間程式碼目標檔案(.obj)。連結器將目標檔案連結,產生可執行檔案 (.exe) 或動態連結庫檔案 (DLL)。 link.exe 是

Linux執行C++程式出現“段錯誤(核心已轉儲)”的原因

轉載自:http://www.linuxidc.com/Linux/2015-09/122966.htm 今天Linux下寫程式出現了“段錯誤(核心已轉儲)"的問題,查了一下資料,加上自己的實踐,總結了以下幾個方面的原因。 1.記憶體訪問出錯 這類問題的典型代表就是陣列越界。 2.非法記憶體訪問 出現這類問

LinuxC/C++開發基礎(編寫makefile、編譯C/C++、連結、可執行程式

本文重點介紹C/C++原始碼工程的編譯連結,編譯器gcc/g++的安裝配置略過... 1. 安裝配置gcc g++ 2. 建立檔案 test.h /test.c / file.h  / file.cpp  3. 編譯.o庫: gcc -c / g++ -c     連結生成靜