1. 問題
在使用llvm-gcc的時候,總是彈出如下出錯:
llvm-gcc: error trying to exec 'cc1': execvp: no such file or directory
2. 解決過程
(1)剛開始,以為是沒有cc1,所以到處找。發現linux的gcc目錄有cc1,在/usr/lib/gcc/4.*.*/目錄下;llvm-gcc的目錄裡面也有cc1,在libexec/子目錄下。
(2)但是,cc1沒有在path路徑裡面。於是試著將/usr/lib/gcc/4.*.*/目錄新增到path路徑。出現的錯誤是:emit-llvm-bc選項無法識別。現在問題越來越明顯,應該是原有gcc中的cc1並不支援llvm特有選項;所以需要使得llvm-gcc訪問自己的libexec目錄下的cc1。但是,簡單地將libexec目錄下的cc1新增到path路徑,容易搞亂二進位制檔案。更重要的是,llvm-gcc應該能找到自己專屬的cc1的。
(3)因為剛開始呼叫llvm-gcc是通過將llvm-gcc放在path路徑直接使用的,覺得可以看一下完整路徑下使用是什麼情況。結果,對了。就是說,使用完整路徑執行llvm-gcc時,可以自動尋找libexec目錄下的cc1;通過加入path路徑的方法,簡單地執行llvm-gcc,會尋找系統庫目錄中cc1.
3. 解決方案
在/bin目錄下建立符號鏈結,而不是通過新增path路徑,即可解決。
困惑的是,難道通過path路徑,訪問的cc1就變了;而符號鏈結沒有變?
硬鏈結與符號鏈結的區別
對於乙個檔案來說,有唯一的索引接點 inode 與之對應,而對於乙個索引接點號,卻可以有多個檔名與之對應。因此,在磁碟上的同乙個檔案可以通過不同的路徑去訪問該檔案。注意在linux下是一切皆檔案的啊,資料夾 新加的硬碟 都可以看著檔案來處理的啊。連線有軟連線和硬連線 hard link 之分的,軟連...
硬鏈結和符號鏈結的區別
首先要弄清楚,在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案都有乙個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到內存在,從而實現檔案的快速訪問。一 硬鏈結 硬鏈結說白了是乙個指標,指向檔案索引節點,系統並不為它重新分配inode。可...
硬鏈結和符號鏈結的區別
首先說說目錄的本質和節點的概念和目錄是通過什麼來查詢到他的子檔案 在linux系統下一切皆檔案,目錄它也是乙個檔案,只不過在它裡面儲存的是 一張表的檔案。而節點就類似我們c語言中學過的陣列的下標,我們可以把每個檔案都看成是 陣列中的元素,而知道了節點號,就可以找到實質的檔案內容了。乙個檔案由資料與元...