gpt4 book ai didi

c - 在 VSCode 中使用 gcc 编译 C 程序时出错

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:28 34 4
gpt4 key购买 nike

我想在 VS Code 中编译以下代码,但我正在使用“code runner”获取此错误。我到处查找,但没有解决我的问题。

我想实现这个T(n) = 2T(n/2) + nlog(n)

q2.c

// b. T(n) = 2T(n/2) + nlog(n)

#include <stdio.h>
#include <math.h>

int func(double n)
{
return (2*func(n/2) + n*(log(n)));

}

int main()
{
double n, result;
printf("Enter the value of 'n' \n");
scanf("%lf",&n);
printf("Hey");
result = func(n);
printf("%lf \n",result);
printf("Hey");

return 0;

}

控制台:

user@user-H310M-DS2:~/Desktop/C programming/Assignments$ cd "/home/user/Desktop/C programming/Assignments/" && gcc q2.c -o q2 && "/home/user/Desktop/C programming/Assignments/"q2
/tmp/ccnNXN3L.o: In function `func':
q2.c:(.text+0x3a): undefined reference to `log'
collect2: error: ld returned 1 exit status

最佳答案

Visual studio code与您的问题无关,您用它编译。因为它是一个 IDE (或源代码编辑器),而不是编译器。我猜你是在某些 Linux 或 POSIX 系统上使用它。顺便说一句,我的首选 source code editor是 GNU emacs .因此,您的 IDE 正在运行一些编译命令(您需要了解哪些命令以及这些命令在做什么)。您可以在终端中运行这些命令(实际上这可能更简单)。

如您的控制台日志所示,您正在使用 GCC 进行编译.某些 gcc 命令已启动(可能由 Visual Studio 代码启动)。

仔细阅读 Invoking GCC .参数的顺序很重要!

你应该编译你的代码

gcc -Wall -Wextra -g q2.c -lm -o q2

让我稍微解释一下:

  • gcc 是您的编译器前端(实际编译器 is cc1 但您从不直接使用它;您要求 gcc 运行它)

  • -Wall 请求几乎所有的警告

  • -Wextra 要求额外的警告。你会很高兴得到它们

  • -gDWARF 中询问调试信息.你真的希望能够use the gdb debugger , 而 gdb 实际上需要调试信息。

  • q2.c 是你唯一translation unit的源文件

  • -lm 用于您的数学库。您正在使用 log(3)及其文档中提到了这一点。

  • -o q2 告诉gcc将可执行文件放在q2中(实际工作由ld完成gcc 调用的链接器)

如何配置 visual studio code 以使用该命令是您的事。您也可以在终端中键入上述命令。然后,您可以通过在终端中为您的 shell 输入 ./q2 来运行您的 q2 程序。 (您可以使用 gdb on it )。

请注意 gcc 正在启动其他程序(如 cc1asld)。如果您想了解哪些,请在上述命令中的 gcc 之后插入 -v

请务必阅读 documentation您正在使用的每个函数(因此请阅读 printf(3)scanf(3)log(3) 至少...)以及您正在使用的每个程序(例如 of gccof Visual studio code) .

一旦你编写了由几个翻译单元组成的更大的程序(例如foo.cbar.cgee .c),你会想要使用一些 build automation工具(因为每次用 gcc -Wall -Wextra -g foo.c bar.c gee.c -lm -o qqq 编译它们是可能的,但是不方便 ).你可以学习使用 GNU make (或 ninja )。

阅读How to debug small programs .不要期望您的程序一开始就按您希望的方式运行。

顺便说一句,研究一些现有的源代码free software程序(但从简单的项目开始,例如在 github 上,少于十万行)。这可以教给您很多有用的东西。

关于c - 在 VSCode 中使用 gcc 编译 C 程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52361553/

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