国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux環(huán)境使用g++編譯C++方法總結(jié)

2024-08-28 00:03:15
字體:
供稿:網(wǎng)友

單個源文件生成可執(zhí)行程序

下面是一個保存在文件 helloworld.cpp 中一個簡單的 C++ 程序的代碼:

/* helloworld.cpp */#include <iostream>int main(int argc,char *argv[]){  std::cout << "hello, world" << std::endl;  return(0);}

程序使用定義在頭文件 iostream 中的 cout,向標(biāo)準(zhǔn)輸出寫入一個簡單的字符串。該代碼可用以下命令編譯為可執(zhí)行文件:

$ g++ helloworld.cpp

編譯器 g++ 通過檢查命令行中指定的文件的后綴名可識別其為 C++ 源代碼文件。編譯器默認的動作:編譯源代碼文件生成對象文件(object file),鏈接對象文件和 libstdc++ 庫中的函數(shù)得到可執(zhí)行程序。然后刪除對象文件。由于命令行中未指定可執(zhí)行程序的文件名,編譯器采用默認的 a.out。程序可以這樣來運行:

$ ./a.outhello, world

更普遍的做法是通過 -o 選項指定可執(zhí)行程序的文件名。下面的命令將產(chǎn)生名為 helloworld 的可執(zhí)行文件:

$ g++ helloworld.cpp -o helloworld

在命令行中輸入程序名可使之運行:

$ ./helloworldhello, world

程序 g++ 是將 gcc 默認語言設(shè)為 C++ 的一個特殊的版本,鏈接時它自動使用 C++ 標(biāo)準(zhǔn)庫而不用 C 標(biāo)準(zhǔn)庫。通過遵循源碼的命名規(guī)范并指定對應(yīng)庫的名字,用 gcc 來編譯鏈接 C++ 程序是可行的,如下例所示:

$ gcc helloworld.cpp -lstdc++ -o helloworld

選項 -l (ell) 通過添加前綴 lib 和后綴 .a 將跟隨它的名字變換為庫的名字 libstdc++.a。而后它在標(biāo)準(zhǔn)庫路徑中查找該庫。gcc 的編譯過程和輸出文件與 g++ 是完全相同的。

在大多數(shù)系統(tǒng)中,GCC 安裝時會安裝一名為 c++ 的程序。如果被安裝,它和 g++ 是等同,如下例所示,用法也一致:

$ c++ helloworld.cpp -o helloworld

多個源文件生成可執(zhí)行程序

如果多于一個的源碼文件在 g++ 命令中指定,它們都將被編譯并被鏈接成一個單一的可執(zhí)行文件。下面是一個名為 speak.h 的頭文件;它包含一個僅含有一個函數(shù)的類的定義:

/* speak.h */#include <iostream>class Speak{  public:    void sayHello(const char *);};

下面列出的是文件 speak.cpp 的內(nèi)容:包含 sayHello() 函數(shù)的函數(shù)體:

/* speak.cpp */#include "speak.h"void Speak::sayHello(const char *str){  std::cout << "Hello " << str << "/n";}

文件 hellospeak.cpp 內(nèi)是一個使用 Speak 類的程序:

/* hellospeak.cpp */#include "speak.h"int main(int argc,char *argv[]){  Speak speak;  speak.sayHello("world");  return(0);}

下面這條命令將上述兩個源碼文件編譯鏈接成一個單一的可執(zhí)行程序:

$ g++ hellospeak.cpp speak.cpp -o hellospeak

PS:這里說一下為什么在命令中沒有提到“speak.h“該文件(原因是:在“speak.cpp“中包含有”#include"speak.h"“這句代碼,它的意思是搜索系統(tǒng)頭文件目錄之前將先在當(dāng)前目錄中搜索文件“speak.h“。而”speak.h“正在該目錄中,不用再在命令中指定了)。

源文件生成對象文件

選項 -c 用來告訴編譯器編譯源代碼但不要執(zhí)行鏈接,輸出結(jié)果為對象文件。文件默認名與源碼文件名相同,只是將其后綴變?yōu)?.o。例如,下面的命令將編譯源碼文件 hellospeak.cpp 并生成對象文件 hellospeak.o:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 正阳县| 莫力| 东至县| 麻城市| 怀来县| 托里县| 彰化县| 项城市| 四平市| 铜鼓县| 南川市| 香格里拉县| 永嘉县| 松桃| 喀喇| 武城县| 垣曲县| 马关县| 通许县| 新河县| 连平县| 天台县| 荔波县| 秭归县| 乌兰县| 陇南市| 西乌珠穆沁旗| 祥云县| 务川| 南和县| 深水埗区| 金沙县| 竹山县| 天水市| 沧源| 绥滨县| 台南市| 墨江| 拜泉县| 南充市| 延边|