c - gcc undefined reference 当我知道引用是正确的

标签 c gcc archlinux

我有这个简单的 C 程序,但无法正确链接。

这是程序,

#include <gsl/gsl_cdf.h>
#include <stdio.h>

int main()
{
   double bottom_tail = gsl_cdf_gaussian_P(-1.96, 1);
   printf("Area between [-1.96, 1.96]: %g\n", 1-2*bottom_tail);
}

在 shell 中,我正在做:

gcc gsl_erf.c -o gslTest -I/usr/local/include/gsl -L/usr/local/lib

我确定 gsl_cdf.h 头文件在 /usr/local/include/gsl 中,同样我知道 .so 位于 /usr/local/lib

链接器,gcc 后端?提示我有一个未定义的 gsl_cdf_gaussian_P

引用

我以为我的顺序不对,所以我也试了:

gcc -I/usr/local/include/gsl -L/usr/local/lib gsl_erf.c -o gslTest

但这也很糟糕。我究竟做错了什么? :(

最佳答案

您必须告诉编译器实际链接到您正在使用的库:您需要一个 -l 选项,可能类似于 -lgsl。 (取.so文件名,去掉.so后缀和lib前缀,就是放在后面的—— l.)

-L 选项告诉链接器在哪里找到 库,但并不指示它实际链接任何东西 — 就像 -I 选项告诉编译器在哪里可以找到 header ,但实际上并不 #include 任何代码。

关于c - gcc undefined reference 当我知道引用是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111987/

相关文章:

c - CentOS7 上的 PAM 标准宏和日志记录

c++ - 如何在 GCC 上创建 va_list?

c - 无法编译 C 代码(开发人员工具、OS X)

c - 大小优化选项

Mysql[MariaDB] - 未知错误 1130

linux - Arch Linux - apt-get update 等效命令?

c - C 存储变量的高级内存管理

c - 如何用C语言获取图像每个像素点的强度?

C:如何使数字始终向上舍入

c++ - 错误: ‘calloc’ was not declared in this scope