gpt4 book ai didi

c - gcc 4.2.1 链接问题 : Undefined Symbols for Architecture x86_64

转载 作者:太空狗 更新时间:2023-10-29 17:22:58 27 4
gpt4 key购买 nike

是的,之前有人问过这个问题,但我在 SO 和其他地方得到的每个答案都与在 gcc 而不是 g++ 中编译 C++ 代码有关,或者与标准库有关。到目前为止,这里没有什么适合我的。

所以,我正在学习 C 的基本速成类(class),并尝试编译一个示例,用于说明链接到您创建的文件,而不是来自标准库的文件。这是代码:

数学函数.h

int   sum       (int x, int y);
float average (float x, float y, float z);

数学函数.c

int sum (int x, int y)
{
return (x + y);
}

float average (float x, float y, float z)
{
return (x + y + z) / 3;
}

最后

test3.c

#include <stdio.h>
#include "math_functions.h"

main ()
{
int theSum = sum (8, 12);
float theAverage = average (16.9, 7.86, 3.4);

printf ("the sum is: %i ", theSum);
printf ("and the average is: %f \n", theAverage);
printf ("average casted to an int is: %i \n", (int)theAverage);
}

这些都在同一个文件夹中。当我打开终端时,cd 到文件夹并运行:

gcc test3.c -o test3

我得到:

Undefined symbols for architecture x86_64:
"_average", referenced from:
_main in ccmf69Tt.o
"_sum", referenced from:
_main in ccxms0fF.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

如果我使用 gcc 或 g++(我不应该这样做,因为这应该都是 C),就会发生这种情况,并且我之前编译的所有内容现在都可以正常工作

#include <stdio.h>

在顶部。

我可以通过删除它来编译和运行

#include "math_functions.h"

test3.c 文件中,将 ma​​th_functions.h 的内容放在 main() 之前,将 ma​​th_functions.c 的内容放在 main() 之后主要的()。是的,那是复制和粘贴,所以它绝对是相同的代码。

所以是的,我可以让我的代码工作,但这违背了练习的目的,因为我最终无法在任何其他 C 文件中使用该代码而不将其复制并粘贴到一个文件...

所以我想知道,有没有办法解决这个问题,这样我就可以包含更多标准 C、C++ 和 Objective-C 库?

这是通过终端框,手动输入 gcc 命令,以及通过 CodeRunner 实现的,CodeRunner 将所有标准命令都隐藏在一个按钮中,所以我无法填充它。

我在 2012 Mac Mini 上运行 Mountain Lion 10.8.4 (12E55),使用 Xcode 4.6.2 的命令行工具(几个小时前安装的,我实际上并没有做太多然后标准使用Mini 到现在)

我在我的 MacBook Air 上安装了所有相同的软件,但还没有测试它是否会出现故障。

有什么指点吗?如果其他人有这个并在 SO 上的某个地方解决了这个问题,请指点我,我一直在寻找一个小时左右,但就像我之前说的那样,到目前为止我找到的所有解决方案最终都在那里是 C++ 代码还是标准库中的一些奇怪的东西。

最佳答案

您只需要编译 maths_function。链接器提示它没有包含在该模块中的定义。

gcc test3.c math_functions.c -o test3

关于c - gcc 4.2.1 链接问题 : Undefined Symbols for Architecture x86_64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17019908/

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