2016-11-13 71 views
0

我有下面的Makefile:Makefile文件可執行錯誤

all: test.c test1.c 
    gcc -o test test.c -lm 
    gcc -o test1 test1.c 
    ./test 1000 input.txt 

我得到了如下的錯誤./test 1000 input.txt make: *** [run] Error 255。 Makefile是否正確?

+0

錯誤255是「未找到命令」行中的內容。這可能是路徑(但你已經添加了'./')或者編譯失敗,並且沒有可執行文件(但是這會導致GCC拋出一條或多或少有用的評論)。所以請檢查一切是否建立和適當。這是唯一的錯誤? – deamentiaemundi

+0

是的,這是唯一的錯誤。 – CapturedTree

+0

@deamentiaemundi我已經更新了我的問題,以使它更簡單。你能再看一次嗎? – CapturedTree

回答

1
./test 1000 input.txt make: *** [run] Error 255 

這並不意味着你的Makefile有什麼問題。這意味着您的./test程序以狀態255退出。

您還沒有向我們顯示test.c,但我假設您沒有寫入return 255;。由於退出狀態通常只有8位,因此您可能(錯誤地)寫入return -1。您(錯誤地)忽略了從main導致未定義行爲的返回語句,並且-1恰好位於返回值寄存器(x86上的eax)上。


你應該總是使編譯器警告。爲了強制你糾正它們,這些警告(通常表示破壞的代碼)也會導致編譯失敗。

CFLAGS = -Wall -Wextra -Werror 

test: test.c 
     $(CC) $(CFLAGS) -o [email protected] $^ 
+0

這是錯誤!我在test.c中的主要方法中忘了'return 0;'。謝謝! – CapturedTree