Gcc

cc1和gcc的關係?

  • February 28, 2020

我正在嘗試在 Linux 伺服器上的主目錄中安裝 Ruby(沒有 root 訪問權限),這當然需要使用gcc. 我能找到的最接近的東西是一個同名的目錄(如果你深入的話)包含cc1

>: find / -iname gcc 2> /dev/null
/usr/libexec/gcc


>: tree -if /usr/libexec/gcc
/usr/libexec/gcc
/usr/libexec/gcc/x86_64-redhat-linux
/usr/libexec/gcc/x86_64-redhat-linux/4.1.1
/usr/libexec/gcc/x86_64-redhat-linux/4.1.1/cc1
/usr/libexec/gcc/x86_64-redhat-linux/4.1.2 -> 4.1.1

CC1 在 Wikipedia 上重定向到 GCC的事實似乎暗示了一些接近身份的東西,但是除了關於重定向的註釋之外,GCC 頁面上沒有其他提及 CC1,而且Google搜尋並沒有給我任何有用的東西,我嘗試cc1使用gcc失敗的地方。

它們之間究竟是什麼關係?它是否給了我在這台機器上編譯 Ruby 的希望?

GCC 的編譯有多個階段,每個階段都使用不同的內部命令。特別是C,首先用cpp進行預處理,然後編譯成彙編,彙編成機器語言,然後連結在一起。

cc1 是內部命令,它採用預處理的 C 語言文件並將它們轉換為彙編。它是編譯 C 的實際部分。對於 C++,有 cc1plus 和其他用於不同語言的內部命令。

有一本關於 Wikibooks 的書用圖片解釋了這個過程

不幸的是,cc1 是一個內部命令,並且只是安裝的一部分,如果你只有這些,你將無法編譯。

引用自:https://unix.stackexchange.com/questions/77779