2009-09-28 45 views
2

我的程序有以下makefile。它創建program.o文件,但是當我嘗試運行它makefile .o幫助...權限被拒絕

./program.o 

我得到以下錯誤:

./statsh.o: Permission denied. 

任何想法,爲什麼這可能發生?

HEADERS = statsh.h functions.h 

default: statsh 

statsh.o: statsh.c $(HEADERS) 
    gcc -c statsh.c -o statsh.o 

statsh: statsh.o 
    gcc statsh.o -o statsh 

clean: 
    -rm -f statsh.o 
    -rm -f statsh 
+0

您不能直接執行目標文件。 – andri

回答

4

.o文件只是一個臨時產品。它包含編譯器爲單個編譯單元生成的機器碼(基本上,這裏是一個.c文件)。但是,該文件不打算執行 - 正如你已經發現的那樣,它實際上不能被執行。

該生成文件生成目標文件statsh。那是你想要執行的那個。它包含了從statsh.o代碼,以及庫函數等,這是由你的makefile所生產的規則

statsh: statsh.o 
    gcc statsh.o -o statsh 

它調用GCC纔能有鏈接器/粘合劑把拼在一起,構建目標程序。

+0

你是對的... ./程序 工作正常 – user69514