В доступе отказано после компиляции с помощью make-файла - PullRequest
3 голосов
/ 20 января 2012

Я получаю это, когда пытаюсь запустить свою программу: bash: ./supermarket: разрешение отклонено

Исполняемые файлы отображаются в виде двоичных файлов с разрешениями на чтение и запись для пользователя, но без разрешения на выполнение

Это код моего make-файла. Можете ли вы понять, что не так?

OBJS    = supermarket.o cashier.o customer.o 
SOURCE  = supermarket.c cashier.c customer.c 
HEADER  = struct.h
OUT     = supermarket cashier customer
CC  = gcc
FLAGS   = -lrt -g -c 

#LIBS   = -lm
# -g option enables debugging mode 
# -c flag generates object code for separate files
# -lm math library
# -lrt semaphores

all: supermarket cashier customer

supermarket: supermarket.c
    $(CC) $(FLAGS) supermarket.c -o supermarket 

cashier: cashier.c
    $(CC) $(FLAGS) cashier.c -o cashier 

customer: customer.c
    $(CC) $(FLAGS) customer.c -o customer

# clean house
clean:
    rm -f $(OBJS) $(OUT)
# do a bit of accounting
count:
    wc $(SOURCE) $(HEADER)

Ответы [ 3 ]

6 голосов
/ 20 января 2012
FLAGS   = -lrt -g -c 

В частности, флаг -c. Он останавливает компиляцию на стадии объекта, поэтому ваши «исполняемые файлы» supermarket, cashier и customer на самом деле являются объектными файлами без их обычного расширения.

1 голос
/ 20 января 2012

Вы компилируете и создаете объектные файлы, а не исполняемые файлы.Опция -c для gcc говорит ему не вызывать компоновщик.Я думаю, это хороший хороший учебник по make.

0 голосов
/ 08 ноября 2015

compile *.c program; затем gcc -o, чтобы связать и создать исполняемый файл.

Или gcc -o ___ -c ____.c, чтобы сделать все это одной командой.

...