gpt4 book ai didi

c - 与 GCC 和 -lm 链接不会在 Ubuntu 上定义 ceil()

转载 作者:太空狗 更新时间:2023-10-29 16:33:23 25 4
gpt4 key购买 nike

我目前正在使用GCC编译,我需要使用<math.h> .问题是它无法识别库。

我也试过-lm什么都没有。

我尝试使用的函数是 ceil()我收到以下错误:

: undefined reference to `ceil'
collect2: ld returned 1 exit status

我使用的是最新的 Ubuntu,math.h 在那里。我尝试使用 -lm在另一台计算机上,它运行良好。

我该如何解决这个问题?

我确实包括了 <math.h> .另外,我使用的命令是:

gcc -lm -o fb file.c

最佳答案

获取此代码并将其放入文件ceil.c:

#include <math.h>
#include <stdio.h>
int main(void)
{
printf("%f\n", ceil(1.2));
return 0;
}

编译它:

$ gcc -o ceil ceil.c
$ gcc -o ceil ceil.c -lm

这两个中的一个应该可以工作。如果两者都不起作用,请显示每次编译的完整错误消息。请注意,-lm 出现在源文件的名称之后(如果您在链接之前将源编译为对象,则为目标文件)。

注意事项:

  1. 现代编译器可能会优化代码以将 2.0 直接传递给 printf() 而无需在运行时调用 ceil(),因此根本不需要数学图书馆。

  2. 经验法则:在命令行中将目标文件和源文件列在库之前。这个答案表明在使用中:-lm 出现在源文件 ceil.c 之后。如果您使用 make 等进行构建,那么您通常会在命令行上使用 ceil.o(连同其他目标文件);通常,您应该在任何库之前列出所有目标文件。

经验法则偶尔会出现异常(exception)情况,但这种情况很少见,并且会针对预期/需要异常(exception)情况的特定情况进行记录。在没有相反的明确文件的情况下,应用经验法则。

关于c - 与 GCC 和 -lm 链接不会在 Ubuntu 上定义 ceil(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266183/

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