2009-09-28 3 views
2

У меня есть следующий make-файл для моей программы. Это создает файл program.o, но когда я пытаюсь запустить егоmakefile .o help ... permission denied

./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). Однако этот файл не предназначен для выполнения - и, как вы уже обнаружили, он фактически не может быть выполнен.

Файл makefile создает целевой файл statsh. Это тот, который вы хотите выполнить. Он содержит код из statsh.o, а также библиотек подпрограмм и т.д. Он производится вашей Makefile по правилу

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

которая вызывает GCC для того, чтобы иметь линкер/связующее положить куски вместе и построить цель программа.

+0

Вы правы ... ./program работал нормально – user69514