複数のファイルを共通のプログラムにコンパイルするのに苦労しています。エラーが発生しました:
'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);
ファイル:pi.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