heavenchou - 週一, 2016/02/29 - 00:01
最近要試著把 c++ 寫的程式放上 ubuntu,終於要來學習這方面的知識了。
首先用 VMWare Player 安裝一套 ubuntu LTS 14.04.4,安裝好之後,就寫了一小段 c++ 的 Hello World 程式。
main.cpp#include <iostream>using namespace std;int main(){cout << "Hello world!" << endl;return 0;}
不過,預設的環境似乎無法處理 c++ 程式,我在終端機的命令如下:
heaven@ubuntu:~/Documents/Monster$ gcc main.cpp -o main
出現下面的訊息
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
於是先換成 c 來試看看。
main.c#include <stdio.h>int main(){printf("Hello World!\n");return 0;}
編譯命令如下
heaven@ubuntu:~/Documents/Monster$ gcc main.c -o main
沒有任何反應,應該是成功了。執行 main
Hello World!
看到 'Hello World!',就表示順利成功。
*** *** ***
再來試 c++,在 Windows 的環境上,我是安裝 Code::Blocks,ubuntu 雖然也有這一套,但我暫時沒有考慮安裝,我想試試直接在終端機下處理,免得日後程式移到 ubuntu,每次都要用 Code::Blocks 再處理一次。
聽說 c++ 的編譯器是 g++,於是執行 g++
heaven@ubuntu:~/Documents/Monster$ g++ main.cpp -o main
出現如下訊息:
程式 'g++' 目前尚未安裝。 您可以由輸入以下內容安裝:
sudo apt-get install g++
於是依樣進行安裝,過程如下:
[sudo] password for heaven:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会安装下列额外的软件包:
g++-4.8 libstdc++-4.8-dev
建议安装的软件包:
g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg
libstdc++-4.8-doc
下列【新】软件包将被安装:
g++ g++-4.8 libstdc++-4.8-dev
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
需要下载 19.2 MB 的软件包。
解压缩后会消耗掉 40.0 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main libstdc++-4.8-dev amd64 4.8.4-2ubuntu1~14.04.1 [1,051 kB]
获取:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main g++-4.8 amd64 4.8.4-2ubuntu1~14.04.1 [18.1 MB]
获取:3 http://us.archive.ubuntu.com/ubuntu/ trusty/main g++ amd64 4:4.8.2-1ubuntu6 [1,490 B]
下载 19.2 MB,耗时 1分 23秒 (231 kB/s)
Selecting previously unselected package libstdc++-4.8-dev:amd64.
(正在读取数据库 ... 系统当前共安装有 199477 个文件和目录。)
Preparing to unpack .../libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.1_amd64.deb ...
Unpacking libstdc++-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.1) ...
Selecting previously unselected package g++-4.8.
Preparing to unpack .../g++-4.8_4.8.4-2ubuntu1~14.04.1_amd64.deb ...
Unpacking g++-4.8 (4.8.4-2ubuntu1~14.04.1) ...
Selecting previously unselected package g++.
Preparing to unpack .../g++_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking g++ (4:4.8.2-1ubuntu6) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
正在设置 libstdc++-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04.1) ...
正在设置 g++-4.8 (4.8.4-2ubuntu1~14.04.1) ...
正在设置 g++ (4:4.8.2-1ubuntu6) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in 自动模式
不知為何會有簡體中文?因為安裝時,語系的處理過程不順,我曾經安裝簡體中文後來又移除,不知是不是簡體中文的殘留?或是這版繁體中文預設就是如此?
先不管簡體中文了,再次使用 g++,命令如下:
heaven@ubuntu:~/Documents/Monster$ g++ main.cpp -o main
沒有反應,應該成功了。執行看看
Hello world!
果然成功了。
不過 g++ 是 4.8 的版本,這一版在正規式的處理會有問題,先前我在 Windows 底下跑 Code::Blocks v13.12,就有正規式的問題。據說要 g++ 4.9 之後的版本才 OK。不知為何目前只更新到 4.8 的版本?
剛寫了一小段正規式的程式,果然就出現問題了。
main.cpp#include <iostream>#include <regex>using namespace std;int main(){string s = "This is 100";regex e ("\\d+");if (regex_search (s,e))cout << "regex OK." << endl;elsecout << "regex NO OK" << endl;}
編譯和執行如下:
heaven@ubuntu:~/Documents/Monster$ g++ -std=c++11 main.cpp -o main
heaven@ubuntu:~/Documents/Monster$ ./main
terminate called after throwing an instance of 'std::regex_error'
what(): regex_error
Aborted (core dumped)
不過先試到這裡就好。因為之前我寫的程式,已經把正規式改成其他方法處理了,Code::Blocks v13.12 可以順利執行,所以先不管 g++ 4.9 了。
下一步是要看看如何在 ubuntu 上順利編譯我寫的程式,也許要練習寫個 makefile 了。
後記:
寫完這篇,就試了這個命令
heaven@ubuntu:~/Documents/Monster$ g++ -std=c++11 *.cpp *.h -o Monster
結果意外順利,直接就編譯成功了。^____^
重要度:
文章分類:
- 瀏覽次數:16921
發表新回應