Ubuntu下编译并运行C++代码
安裝完Ubuntu后,(用戶目錄有時(shí)候也叫 home 文件夾或者主文件夾,它的路徑是/home/username,其中 username 就是我們登錄 Linux 時(shí)使用的用戶名。Linux 會(huì)在 home 目錄下為每一個(gè)登錄的用戶創(chuàng)建一個(gè)文件夾,專門用來(lái)存放該用戶使用到的配置文件、文本文檔、圖片、可執(zhí)行程序等,以和其他用戶區(qū)分開來(lái)。)就是一系列的輸入命令:
1.首先輸入命令pwd查看你所在的目錄。pwd命令:查看當(dāng)前路徑。
2.輸入命令ls查看在該目錄下的所有目錄。
3.輸入命令cd 命令:切換當(dāng)前目錄至其他目錄 .(cd 要進(jìn)入的目錄名)進(jìn)入該目錄下,(cd ..)返回上層目錄,
cd /:加上斜杠表示是進(jìn)入到根目錄。
(1)cd 進(jìn)入用戶主目錄
(2)cd ~ 進(jìn)入用戶主目錄
(3)cd - 返回進(jìn)入此目錄之前所在目錄
(4)cd .. 返回上一級(jí)目錄
(5)cd ../..返回上兩級(jí)目錄
(6)cd !$ 把上個(gè)命令的參數(shù)作為cd 參數(shù)使用
4.進(jìn)入目錄后,輸入命令 (mkdir 文件名)表示在該目錄下創(chuàng)建新的文件
mkdir命令用來(lái)創(chuàng)建指定的目錄的名稱,要求創(chuàng)建的暈乎在當(dāng)前目錄中具有權(quán)限,并且創(chuàng)建的目錄不能是當(dāng)前目錄中已有的。
mkdir [選項(xiàng)] [目錄]
選項(xiàng)格式:
-m --mode=模式,建立目錄的時(shí)候同時(shí)設(shè)置目錄的權(quán)限;
-p --parents若所建立的上層目錄不存在,并建立該目錄。即確保目錄名稱存在,不存在的就建一個(gè)。
-v --verbose 每次創(chuàng)建新目錄都顯示信息
-h --help 幫助信息
例如:
創(chuàng)建一個(gè)空的目錄hello
mkdir hello
遞歸創(chuàng)建多個(gè)目錄
mkdir -p hello/word
創(chuàng)建權(quán)限為111的目錄
mkdir -m 111 test
當(dāng)前目錄下創(chuàng)建test/test1,權(quán)限為111
mkdir -p-m 111 test/test1
5.mkdir hello后,輸入命令cd hello進(jìn)入該文件夾,現(xiàn)在就是建立可執(zhí)行的C/C++文件啦,輸入命令:touch+filename.c/filename.cpp,touch是建立文件的命令,.c/.cpp的后綴表示文件的類型。這里建立一個(gè)文件名為Hello.c的c文件;
A.使用Gedit編輯器(Gedit 是一款簡(jiǎn)單實(shí)用的文本編輯器,界面優(yōu)雅,支持語(yǔ)法高亮,比 Vim 容易上手,它和 Windows 下的編輯器沒有什么兩樣)
(如果你使用的是其它的 Linux 發(fā)行版,可能沒有默認(rèn)安裝 Gedit,這個(gè)時(shí)候就得自己安裝,具體步驟為:
$ sudo apt-add-repository ppa:ubuntu-on-rails/ppa? ? #添加ubuntu的軟件源
$ sudo apt-get update? ? #更新軟件列表
$ sudo apt-get install gedit-gmate? ? #安裝)
?
($ cd hello? #進(jìn)入 hello 目錄,這是源文件所在的目錄
$ touch hello.c? #使用 touch 命令創(chuàng)建一個(gè)名為 hello.c 的空文件
$ gedit hello.c? #使用 gedit 命令編輯 hello.c)這樣就完成了源文件的創(chuàng)建,并能夠使用 Gedit 編輯源文件了,(Ctrl+S保存文件,就完成了源代碼的編輯工作。此時(shí)需要關(guān)閉 Gedit 的窗口,$ gedit main.c關(guān)閉完窗口后這條命令才算執(zhí)行結(jié)束,才能在控制臺(tái)繼續(xù)輸入其它命令)。
B.使用GCC編譯器(使用 GCC 來(lái)編譯C語(yǔ)言程序)GCC 僅僅是一個(gè)編譯器,沒有界面,必須在命令行模式下使用。通過(guò)gcc命令就可以將源文件編譯成可執(zhí)行文件
6.文件建立好后就是雙擊文件用Linux系統(tǒng)自帶的Vim文本編輯器來(lái)寫代碼啦;
保存好c文件后接下來(lái)就是編譯成可執(zhí)行文件,輸入命令:gcc Hello.c -o hello,gcc是編譯c文件的命令,若是.cpp文件則用g++,-o后面的hello就是可執(zhí)行的文件名(可隨意起一個(gè)filename);
注意:如果沒有在Hello.c文件中正確輸入代碼,或者完全沒有輸入任何東西是編譯失敗的。
最后,就是執(zhí)行啦,輸入命令:./hello,“./”是運(yùn)行可執(zhí)行文件的命令;
擴(kuò)展:
(1)$ gcc hello.c? #在 gcc 命令后面緊跟源文件名
打開 hello.cpp 目錄(是個(gè)文件夾),會(huì)看到多了一個(gè)名為 hello.out 的文件,這就是最終生成的可執(zhí)行文件。
這樣就一次性完成了編譯和鏈接的全部過(guò)程,非常方便。Linux 不以文件后綴來(lái)區(qū)分可執(zhí)行文件,Linux 下的可執(zhí)行文件后綴理論上可以是任意的, 這里的.out只是用來(lái)表明它是 GCC 的輸出文件,不管源文件的名字是什么,GCC 生成的可執(zhí)行文件的默認(rèn)名字始終是a.out
(2)如果不想使用默認(rèn)的文件名,那么可以通過(guò)-o選項(xiàng)來(lái)自定義文件名,例如:$ gcc hello.c -o hello.out? (這樣生成的可執(zhí)行程序的名字就是main.out。)
(3)因?yàn)?Linux 下可執(zhí)行文件的后綴僅僅是一種形式上的,所以可執(zhí)行文件也可以不帶后綴,例如: $ gcc hello.c -o hello ? (這樣生成的可執(zhí)行程序的名字就是main)
(4)通過(guò)-o選項(xiàng)也可以將可執(zhí)行文件輸出到其他目錄,并不一定非得在當(dāng)前目錄下,例如: $ gcc hello.c -o ./out/hello.out ?? 或者?$ gcc hello.c -o out/hello.out
表示將可執(zhí)行文件輸出到當(dāng)前目錄下的out目錄,并命名為hello.out。./表示當(dāng)前目錄,如果不寫,默認(rèn)也是當(dāng)前目錄。 (注意:out 目錄必須存在,如果不存在,gcc 命令不會(huì)自動(dòng)創(chuàng)建,而是拋出一個(gè)錯(cuò)誤。)
?
C.運(yùn)行可執(zhí)行程序
7.上面我們生成了可執(zhí)行程序,要運(yùn)行他,只用在控制臺(tái)中輸入程序的名字就可以,如下所示:
$ ./hello.out ? ? ?? 即 ? $ ./a.out ?
./表示當(dāng)前目錄,整條命令的意思是運(yùn)行當(dāng)前目錄下的 a.out 程序。如果不寫./,Linux 會(huì)到系統(tǒng)路徑下查找 a.out,而系統(tǒng)路徑下顯然不存在這個(gè)程序,所以會(huì)運(yùn)行失敗。
所謂系統(tǒng)路徑,就是環(huán)境變量指定的路徑,我們可以通過(guò)修改環(huán)境變量添加自己的路徑,或者刪除某個(gè)路徑。很多時(shí)候,一條Linux命令對(duì)應(yīng)一個(gè)可執(zhí)行程序,如果執(zhí)行命令時(shí)沒有指明路徑,那么就會(huì)到系統(tǒng)路徑下查找對(duì)應(yīng)的程序。
輸入完上面的命令,按下回車鍵,程序就開始執(zhí)行了,它會(huì)將輸出結(jié)果直接顯示在控制臺(tái)上,
如果程序在其它目錄下,運(yùn)行程序時(shí)還要帶上目錄的名字,例如:
$ ./out/hello.out ? 或者 ?$ out/main.out
這個(gè)時(shí)候加不加./都一樣,Linux 能夠識(shí)別出out是一個(gè)目錄,而不是一個(gè)命令,它默認(rèn)會(huì)在當(dāng)前路徑下查找該目錄,而不是去系統(tǒng)路徑下查找,所以不加./也不會(huì)出錯(cuò)。
注意,如果程序沒有執(zhí)行權(quán)限,可以使用sudo命令來(lái)增加權(quán)限,例如:
$ sudo chmod 777 a.out
完整步驟:
$ cd hello.cpp? #進(jìn)入源文件所在目錄
$ touch hello.c? #新建空白的源文件
$ gedit hello.c? #編輯源文件
$ gcc hello.c? #生成可執(zhí)行程序
$ ./hello.out? #運(yùn)行可執(zhí)行程序
?? hello?
$? ?#繼續(xù)輸入其它命令
?
?
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Ubuntu下编译并运行C++代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决ros安装 使用roscore命令测
- 下一篇: 1.Socket通信