首頁 > 軟體

Ubuntu gcc錯誤:對'log'等函數未定義的參照

2020-06-16 17:06:43

Ubuntu gcc錯誤:對'log'等函數未定義的參照

a.c
#include <stdio.h>
#include <math.h>
int main()
{
    float a;
    void print_logarithm(double);
    printf("enter a num:");
    scanf("%f",&a);
    print_logarithm(a);
    return 0;
}
void print_logarithm(double x)
{
    if(x<=0.0)
    {
        printf("Positive numbers only,please.n");
        return;
    }
    printf("The log of x is %f",log(x));
}

Ubuntu gcc編譯

直接命令gcc -Wall a.c

1 linuxidc.com@linuxidc:~$ gcc -Wall a.c
2 /tmp/ccmKjOLq.o:在函數‘print_logarithm’中:
3 a.c:(.text+0x97):對‘log’未定義的參照
4 collect2: error: ld returned 1 exit status

查了一下發現:主要是C/C++編譯為obj檔案的時候並不需要函數的具體實現,只要有函數的原型即可。但是在連結為可執行檔案的時候就必須要具體的實現了。驗證如下:

1 linuxidc.com@linuxidc:~$ gcc -Wall -c a.c
2 linuxidc.com@linuxidc:~$ gcc -Wall -o a a.o
3 a.o:在函數‘print_logarithm’中:
4 a.c:(.text+0x97):對‘log’未定義的參照
5 collect2: error: ld returned 1 exit status
6 linuxidc.com@linuxidc:~$ 

編譯時沒有問題,連結生成可執行檔案時報錯。接下來加上-lm。 連結成功,如下:

1 linuxidc.com@linuxidc:~$ gcc -Wall -o a a.o -lm
2 linuxidc.com@linuxidc:~$ 

IT145.com E-mail:sddin#qq.com