Linux 下 的 cc 和 gcc
周銀輝
在Linux下一會看到cc,另一會又看到gcc,感覺又點混亂的樣子。它們是同一個東西麼,有啥區別呢
一分為二地看:
首先,如果討論範圍在Unix和Linux之間,那麼cc和gcc不是同一個東西。cc來自於Unix的c語言編譯器,是 c compiler 的縮寫。gcc來自Linux世界,是GNU compiler collection 的縮寫,注意這是一個編譯器集合,不僅僅是c或c++。
其次, 如果討論範圍僅限於Linux,我們可以認為它們是一樣的,在Linux下調用cc時,其實際上並不指向unix的cc編譯器,而是指向了gcc,也就是說cc是gcc的一個連結(捷徑),看看下面的終端輸出就明白了:
zhouyinhui@zhouyinhui-laptop:/etc/alternatives$ which cc
/usr/bin/cc
zhouyinhui@zhouyinhui-laptop:/etc/alternatives$ ls -al /usr/bin/cc
lrwxrwxrwx 1 root root 20 2010-01-20 23:56 /usr/bin/cc -> /etc/alternatives/cc
zhouyinhui@zhouyinhui-laptop:/etc/alternatives$ ls -al /etc/alternatives/cc
lrwxrwxrwx 1 root root 12 2010-01-20 23:56 /etc/alternatives/cc -> /usr/bin/gcc
為什麼會這樣,很簡單,為了相容性:
cc是Unix下的,是收費的,可不向Linux那樣可以那來隨便用,所以Linux下是沒有cc的
然後,問題來了,如果我的c/c++項目是在Unix下編寫的,在寫makefile檔案時自然地用了cc,當將其放到Linux下這無法make了,必須將其中的cc全部修改成gcc。這太麻煩了哈,所以,Linux這想了這麼一個方便的解決方案:不修改makefile,繼續使用cc,這個cc是個“冒牌貨”,它實際指向gcc。
-----------
另外,關於 g++ 和 gcc, 看這裡