在makefile的帮助下编译后权限被拒绝

时间:2012-01-19 21:10:49

标签: c linux makefile permission-denied

当我尝试运行我的程序时,我得到了这个: bash:./ supermarket:权限被拒绝

可执行文件显示为二进制文件,包含read&向用户写入权限但没有执行权限

这是我的makefile的代码,你可以弄清楚出了什么问题吗?

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 个答案:

答案 0 :(得分:6)

FLAGS   = -lrt -g -c 

具体来说,-c标志。它会在对象阶段停止编译,因此您的supermarketcashiercustomer“可执行文件”实际上是没有通常扩展名的对象文件。

答案 1 :(得分:1)

您正在编译和创建目标文件,而不是可执行文件。 gcc的-c选项告诉它不要调用链接器。 我认为this是一个非常简单的制作教程。

答案 2 :(得分:0)

gcc -o;然后gcc -o ___ -c ____.c链接并创建可执行文件。

或{{1}}在一个命令中完成所有操作。