在Linux系統下編譯並執行C++程式
引言
為什麼要在Linux下寫程式?
首先要問一下自己,為什麼要寫這個程式。
如果我們寫一個執行在windows平臺的應用程式,那麼用Linux寫肯定是傻瓜或者強迫症,因為在windows平臺除錯windows程式可以更容易發現並解決問題,反過來也一樣,在Linux平臺調試出來的程式可以更好的適應Linux平臺的環境,如果在windows下寫出一個程式,結果到了Linux的執行環境出了暗病,那真是欲哭無淚,無從查起。
而很多時候,我們的程式都不是執行在windows平臺的,例如嵌入式裝置的記憶體容量十分有限,只能把Linux核心裁裁剪剪然後執行,所以嵌入式開發者一般都要求在Linux平臺下工作
正文
在windows下,我們寫C++程式一般會有如下幾個步驟:
- 編寫.cpp檔案,程式碼都在裡面;
- 可能還有一些.h檔案之類的支援檔案,這些檔案一般都會放在一起,或者相對位置是固定的;
- 編譯檔案,連結檔案,生成.exe檔案
- 雙擊執行.exe檔案(其實開發平臺裡的“執行”就是幫你雙擊了一下而已)
在Linux下這些步驟基本都是一樣的,不同的是,Linux最後生成的檔案不是.exe,而是.out
步驟
- 首先得有個Linux作業系統,如果是新手(像我)最好選一個圖形介面做的好的,例如Ubuntu。一般這些作業系統都是免費開源的,這也是Linux的一大好處,可以直接修改一切檔案
- 在Linux作業系統上新建一個資料夾,在裡面放你的工程,如下圖
- 編寫程式碼的部分就可以跳過了吧,例如我們都非常熟悉的hello world
接下來是編譯,開啟終端,將終端路徑設定為你的工程目錄。cd 和ls命令真是好用。。。dir命令跟ls命令類似,看個人喜好吧,都一樣。
輸入命令 gcc test.cpp
誒→_→?為什麼編譯不通過?當然不是程式寫錯了,而是 gcc 是 c 語言的編譯器,而我們寫的程式碼是C++程式碼,所以改為輸入 g++ test.cpp
沒有任何問題,這個時候我們可以看見工程目錄上多了一個a.out,它就是我們的“可執行檔案”了。
可是為什麼是 a.out 而不是 b.out 或者 nfsdnksd.out呢?這是預設的,沒有為什麼→_→如果想給編譯出來的檔案起一個名字,可以在編譯的時候用 -o 命令,例如 g++ test.cpp -o joyce
然後我們就可以看到,工程目錄多了一個joyce檔案
執行檔案的時候來的,在終端輸入 ./a.out 即可看到你的程式輸出。輸入 ./joyce 也是一樣的。記住不要漏了斜槓前面的點!!
這樣我們就完成了一個最基本的程式編譯和執行。