没有规则可制作目标“geeter.c”,由“geeter.o” 需求
时间: 2023-09-11 21:10:08 浏览: 34
非常抱歉,这是我的疏忽导致的错误,感谢您的指出。以下是已经修改后的makefile文件:
```
# 定义变量
CC = gcc
CFLAGS = -Wall -O2
LDFLAGS = -L./lib -luser
# 定义目标文件
OBJ = geeter.o calculator.o main.o
# 伪目标
.PHONY: all build install clean
# 默认目标
all: build calc
# 生成动态链接库libuser.so
libuser.so: geeter.o calculator.o
$(CC) -shared -o $@ $^
# 生成可执行文件calc
calc: $(OBJ)
$(CC) -o $@ $^ $(LDFLAGS)
# 编译geeter.c和calculator.c为目标文件
geeter.o: geeter.c
$(CC) -c -fPIC $< $(CFLAGS)
calculator.o: calculator.c
$(CC) -c -fPIC $< $(CFLAGS)
# 编译主函数main.c为目标文件
main.o: main.c
$(CC) -c $< $(CFLAGS)
# 伪目标build,将geeter.c和calculator.c目标文件添加到动态链接库libuser.so
build: libuser.so
# 伪目标install,将libuser.so复制到项目子目录lib
install: libuser.so
mkdir -p lib
cp libuser.so lib/
# 伪目标clean,清除目标文件和可执行文件
clean:
rm -f *.o *.so calc
```
修改后的代码中,规则部分已经正确定义了如何生成目标文件。如果您还有任何问题,请随时提出。