在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
Linux下的C++程式:統計一個目錄及其內部檔案總共佔據的空間大小
統計一個目錄的大小(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學習筆記(一)】linux下的C++程式設計師的春天,附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.非法記憶體訪問 出現這類問
Linux下的C/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 連結生成靜