gpt4 book ai didi

c++ - C/C++ 项目可以使用 Xcode 编译,但不能使用 gcc/g++ 编译

转载 作者:行者123 更新时间:2023-11-30 18:57:31 30 4
gpt4 key购买 nike

当使用 gcc、g++ 或 make 在终端中编译一个小型 C 或 C++ 项目时,我收到以下错误:

/tmp/ccG1caGi.o: In function `main':
main.c:(.text+0xa): undefined reference to `display_menu'
main.c:(.text+0xf): undefined reference to `get_input'
collect2: ld returned 1 exit status

main.c:

#include "menu.h"

int main()
{
display_menu();
get_input();

return 0;
}

菜单.h:

void display_menu();
int get_input();

但是使用 Xcode,我没有收到任何错误或警告。

这里可能出现什么问题?当我包含文件时似乎是这样的。

最佳答案

因此,gcc 提示它不知道 display_menuget_input 在哪里,它们在做什么或如何将它们链接到其中,这是正确的。

您可能有更多源文件,其中定义了这些函数(也许是menu.c?)。如果是这样,请将它们添加到您的编译指令中:

gcc main.c menu.c

或者,只需使用 -c 标志编译成一个对象(稍后等待函数)。这不会生成可执行文件,但会生成一个等待最终编译的目标文件

gcc main.c -c     # Make the main.o object
gcc menu.c main.o # Link the main.o object with a compiled menu.c

进入最终的可执行文件。

Xcode 很可能知道所有源文件,并且很乐意在编译步骤中将它们放在一起。如果您手动执行此操作,则必须自己做更多的工作。不是当您包含文件(即 h 文件)时,而是当您拥有多文件源时。

关于c++ - C/C++ 项目可以使用 Xcode 编译,但不能使用 gcc/g++ 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20638326/

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