我正在努力将多个文件编译成一个通用程序。我收到一个错误:
对“pi”的未定义引用
这是我的代码和 Makefile 的骨架。我究竟做错了什么?谢谢!
文件:calcPi.c
#include <stdlib.h>
#include <stdio.h>
#include <sched.h>
#include <string.h>
#include "pi.h"
int main(int argc, char* argv[]) {
long iterations = 1000000;
int policy = 2;
int numChildren = 3;
pi(iterations, policy, numChildren);
return 0;
}
文件:pi.h
void pi(long iterations, int policy, int numChildren);
文件:pic.c
#include "pi.h"
void pi(long iterations, int policy, int numChildren) {
//lots of code here
}
我正在使用 Makefile 编译它:
CC = gcc
CFLAGS = -c -g -Wall -Wextra
LFLAGS = -g -Wall -Wextra
all: calcPi pi
calcPi: calcPi.o
$(CC) $(LFLAGS) $^ -o $@ -lm
pi: pi.o
$(CC) $(LFLAGS) $^ -o $@ -lm
calcPi.o: calcPi.c
$(CC) $(CFLAGS) $<
pi.o: pi.c
$(CC) $(CFLAGS) $<
clean:
rm -f pi calcPi
rm -f *.o
rm -f *~
编辑:响应对整个错误消息的请求:
在函数 'main'" calcPi.c:55: 未定义引用 'pi' collect2: 错误: ld 返回 1 退出状态 make: * [calcPi.o] 错误 1