makefile得到的可执行文件执行什么也没有
写了一个简单的makefile,执行很正常,生成可执行文件。但是这个可执行文件启动什么也没有,就掉了。
不用makefile,用cc编译命令的可执行文件就能很好的执行。高手给看看makefile有什么问题。
我给main函数一开始就printf("begin.....\n\n")
makefile编译生成的可执行文件test执行情况:
[USER]$test
[USER]$
cc编译命令直接生成的可执行文件a.out执行情况:
[USER]$a.out
begin.......
cfg=[test.cfg]
1111111111111111
port=4590
222222222222222222
start 2
makefile内容:
LOBJ=cfgFile.o dataContainer.o queue.o receive.o main.o
all:test
test:$(LOBJ)
cc -o $@ -lpthread $(LOBJ)
main.o:main.c
cc -c -lpthread main.c
cfgFile.o:cfgFile.c
cc -c -lpthread cfgFile.c
dataContainer.o:dataContainer.c
cc -c -lpthread dataContainer.c
queue.o:queue.c
cc -c -lpthread queue.c
receive.o:receive.c
cc -c -lpthread receive.c
#clean:
# rm *.o
cc命令直接编译:
cc -lpthread cfgFile.c dataContainer.c queue.c receive.c main.c
------解决方案--------------------LOBJ=cfgFile.o dataContainer.o queue.o receive.o main.o
all:test
test:$(LOBJ)
cc -o $@ $^ -lpthread
main.o:main.c
cc -c main.c
cfgFile.o:cfgFile.c
cc -c cfgFile.c
dataContainer.o:dataContainer.c
cc -c dataContainer.c
queue.o:queue.c
cc -c queue.c
receive.o:receive.c
cc -c receive.c
#clean:
# rm *.o
------解决方案--------------------LOBJ=cfgFile.o dataContainer.o queue.o receive.o main.o
all:test
test:$(LOBJ)
cc -o $@ -lpthread $(LOBJ)
.c.o:
cc -c -lpthread $<
你makefile可以简化成这样试试,执行时#./test
------解决方案--------------------只编译到了.o,没编成可执行文件
------解决方案--------------------这跟makefile没关,你直接执行test,执行的不是你生成的test,而是执行/usr/bin/test