當然
"g++ 是C++ 的compiler, gcc 是C的compiler" 這個說法隨便google就一堆文章(還都是CP的) 跟你說.... 喔不... 它們不是這樣的!!!
光看不過癮,來手動證明一下。(絕對不是為了一天一筆記的目標亂充數!!!)
google 大神說:
g++ 在編譯過程中,compiler 還是呼叫 gcc
link 才呼叫g++
事實上... link 也可以呼叫gcc
手動!!
File name: bejo.cc
#include <iostream>
using namespace std;
int main() {
cout << "Hello,world!" <<endl;
return 0;
}
Compiler:
# g++ bejo.cc -o bejo
# ./bejo
Hello,world!
沒問題
#gcc bejo.cc -o bejo
/tmp/ccxrSgbL.o: In function `main':
bejo.cc:(.text+0x14): undefined reference to `std::cout'
bejo.cc:(.text+0x19): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
(delete...)
有問題!!!
Link 錯了...
# gcc -lstdc++ bejo.cc -o bejo
#./bejo
Hello,world!
----> gcc表示: 我也很行的!!!
PS.
通常附檔名是用來辨認C or C++,例子用.cc 其實很微妙(.cpp 略佳XD)
要"拉天"一下也可以
# gcc -x c++ -lstdc++ bejo.aa -o bejo
# ./bejo
Hello,world!
靠 -x 來指定語言,無視。
--
其實這小東西早就知道,這幾天搜尋文件,卻發現絕大部分的網站都cp來cp去,內容相似,看了就懂,可就沒有親自跑一下的感覺,但往往Open Source最有用的東西不是cp來.. 而是前人手動血淚阿...
趁重build toolchain 的時間,塗鴉一篇 哈。(一天一篇筆記好像有點難 O__Q)
沒有留言:
張貼留言