gpt4 book ai didi

编译 : undefined reference to

转载 作者:行者123 更新时间:2023-12-04 05:07:19 27 4
gpt4 key购买 nike

我正在努力将多个文件编译成一个通用程序。我收到一个错误:

undefined reference to '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' 的 undefined reference
collect2: 错误: ld 返回 1 个退出状态
制作:* [calcPi.o] 错误 1

最佳答案

首先是真的应该是一个单独的应用程序吗?

您指的是 中的 pi() 函数calcPi ,但它只被编译成 pi.o ,因此您需要将其添加为依赖项。

我认为你想做的,是创建 calcPi 使用 calcPi.o pi.o 目标文件。

CC = gcc
CFLAGS = -c -g -Wall -Wextra
LFLAGS = -g -Wall -Wextra

all: calcPi

calcPi: calcPi.o pi.o
$(CC) $(LFLAGS) $^ -o $@ -lm

calcPi.o: calcPi.c
$(CC) $(CFLAGS) $<

pi.o: pi.c
$(CC) $(CFLAGS) $<

clean:
rm -f calc
rm -f *.o
rm -f *~

关于编译 : undefined reference to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com