2014-04-04 202 views
5

我試圖包含一個文件,我已經在cmake中定義了。GCC內部編譯器錯誤:分割錯誤

-DUNINSTD_INC=$ENV{TARGET_FS}/usr/include/unistd.h 

我檢查了這個定義,UNINSTD_INC是正確的文件路徑。

代碼-剪斷,這將導致分段錯誤是:

#define SURROUND(x) QUOTE(x) 
#define QUOTE(x) #x 

#include SURROUND(UNINSTD_INC) 

如果我編譯代碼時,得到下面的錯誤:

unistd.h中:1:內部編譯器錯誤:分段錯誤 請提交完整的錯誤報告, 與預處理源,如果適當。

有人有想法解決這個問題嗎?

或其他方式來包含預定義的文件?

gcc版本:gcc版本4.6.3(Ubuntu的/ Linaro的4.6.3-1ubuntu5)

+1

你有沒有試過gcc 4.8?另外:預處理源代碼是什麼樣的? – stefan

+0

現在可以使用這個gcc版本。這隻屬於OSS清算。 此外,我無法查看預處理代碼,segfault是在開始預處理代碼 – Korbi

+0

那麼你必須嘗試隔離問題。它沒有宏的工作嗎? – stefan

回答

-1

修復的方法是簡單的:寫一個bug報告,找出誰發給,並等待編譯器版本修復它,正如錯誤消息所建議的那樣。

+0

是的,這將是最簡單的方法。但我沒有時間等待。 – Korbi