当前位置: 技术问答>linux和unix
请教在makefile中如何打包2个可执行文件?
来源: 互联网 发布时间:2016-09-03
本文导语: 我的两个可执行文件都有main函数, 用类似下面的方法: all:main1 main2 main1: gcc -o main1 main1.o main1.o:main1.c gcc -c main1.o main1.c main2: gcc -o main2 main2.o main2.o:main2.c gcc -c main2.o main2.c 会提...
我的两个可执行文件都有main函数,
用类似下面的方法:
all:main1 main2
main1:
gcc -o main1 main1.o
main1.o:main1.c
gcc -c main1.o main1.c
main2:
gcc -o main2 main2.o
main2.o:main2.c
gcc -c main2.o main2.c
会提示:
main2.c:(.text+0xa17): multiple definition of `main'
main1.o:main.c:(.text+0x0): first defined here
请问有没有什么办法解决?
用类似下面的方法:
all:main1 main2
main1:
gcc -o main1 main1.o
main1.o:main1.c
gcc -c main1.o main1.c
main2:
gcc -o main2 main2.o
main2.o:main2.c
gcc -c main2.o main2.c
会提示:
main2.c:(.text+0xa17): multiple definition of `main'
main1.o:main.c:(.text+0x0): first defined here
请问有没有什么办法解决?
|
看不出这个makefile会出现main重复的问题。
但是它有一些其他的问题,我改过来了:
all:main1 main2
main1: main1.o
gcc -o main1 main1.o
main1.o:main1.c
gcc -c -o main1.o main1.c
main2: main2.o
gcc -o main2 main2.o
main2.o:main2.c
gcc -c -o main2.o main2.c
但是它有一些其他的问题,我改过来了:
all:main1 main2
main1: main1.o
gcc -o main1 main1.o
main1.o:main1.c
gcc -c -o main1.o main1.c
main2: main2.o
gcc -o main2 main2.o
main2.o:main2.c
gcc -c -o main2.o main2.c
|
Make工具管不到程序内部有没有出现重复定义。所以只能是程序本身出错了,或是gcc用错了
|
先clean掉main1.o和main2.o,可能是遗留文件造成的错误。
|
$(TARGET): $(OBJS)
$(TARGET)依赖的是$(OBJS),也就是system-daemon.o,这个.o文件没有变动过么,又怎么会编译你的dir2呢。
你的这个Makefile不完整吧,应该还有讲怎么生成$(OBJS)的。