2011-04-04 76 views
24

我嘗試編譯海合會在Pro * C文件,我收到此錯誤:化妝:*** []錯誤1錯誤

make: *** [MedLib_x.o] Error 1 

這是化妝打印命令:

/usr/bin/gcc -g -fPIC -m64 -DSS_64BIT_SERVER -I/home/med/src/common - 
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/demo 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/xdk/include INCLUDE=/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public -lnapi -ltabs -c MedLib_x.c 

請幫助我爲什麼這會使錯誤到來?雖然也創建了對象文件。

+0

沒有錯誤消息中的更多詳細信息,很難知道錯在哪裏 – fnokke 2011-04-04 07:13:12

+0

您引用的錯誤必須在GCC出現錯誤之前進行,請引用該錯誤。 – DarkDust 2011-04-04 07:16:49

+0

謝謝你的回覆。請詳細說明您需要的更多細節? – QMG 2011-04-04 07:32:33

回答

16

從GNU Make錯誤附錄中可以看出,這不是一個Make錯誤,而是一個來自gcc的錯誤。

‘[foo] Error NN’ ‘[foo] signal description’ These errors are not really make errors at all. They mean that a program that make invoked as part of a recipe returned a non-0 error code (‘Error NN’), which make interprets as failure, or it exited in some other abnormal fashion (with a signal of some type). See Errors in Recipes. If no *** is attached to the message, then the subprocess failed but the rule in the makefile was prefixed with the - special character, so make ignored the error.

所以爲了解決這個問題,需要gcc的錯誤信息。直接將Makefile中的命令粘貼到命令行並查看gcc所說的內容。 For more details on Make errors click here.

+0

謝謝你的回覆。我無法鏈接錯誤和頁面上寫入有關出錯的信息。 – QMG 2011-04-04 08:55:49

11

我得到了同樣的結果。運行「make」,只有這條消息失敗。

% make 
make: *** [all] Error 1 

這是由規則中的命令引起的非零退出狀態引起的。例如。想象一下以下的(愚蠢)Makefile

all: 
     @false 
     echo "hello" 

這將失敗(不打印「你好」)與上述消息,因爲false與退出狀態終止1.

在我的情況,我想成爲聰明並在處理文件之前對其進行備份(以便我可以將新生成的文件與先前的文件進行比較)。我在我的Make規則看起來像這樣有這樣做:

@[ -e [email protected] ] && mv [email protected] [email protected] 

...沒有意識到,如果目標文件不存在,則上述結構將退出(不運行mv命令)用退出狀態1,因此該規則中的任何後續命令都無法運行。重寫我的錯誤行:

@if [ -e [email protected] ]; then mv [email protected] [email protected]; fi 

解決了我的問題。

+0

另一種選擇是'@ [! -e $ @] || mv $ @ $ @。bak' – T0xicCode 2014-02-09 04:40:57

+0

絕對! '@ [! -e $ @] || mv $ @ $ @。bak'也可以工作!但是,爲了試圖超越雙重否定,我的大腦受到傷害,所以出於對我的同行程序員(即很可能是我自己,未來一年)的考慮,我寧願使用稍長的if語句代替。 – zrajm 2015-04-19 16:31:06

0

在我的情況下,有一個未初始化的靜態變量。當我初始化它時,錯誤被刪除。我不知道它背後的邏輯,但爲我工作。我知道它有點晚了,但其他有類似問題的人可能會得到一些幫助。

3

有時你會得到大量的編譯器輸出的許多警告,並沒有輸出線 ,說 「錯誤:你做錯了這裏」 但仍然是一個錯誤。一個例子是一個缺少的頭文件 - 編譯器說類似「沒有這樣的文件」,但不是「錯誤:沒有這樣的文件」,然後在一段時間後以非零退出代碼退出(可能在更多警告之後)。在這些情況下Make會彈出錯誤消息!