读书人

makefile失去的可执行文件执行什么也没

发布时间: 2013-07-01 12:33:04 作者: rapoo

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

读书人网 >UNIXLINUX

热点推荐