我正在努力将多个文件编译成一个通用程序。我收到一个错误:
未定义对“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);
文件:π.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退出状态
制造商:
*
[calcPi.o]错误1