GSL中未定义的引用

时间:2015-07-24 00:59:41

标签: c gcc undefined-reference gsl

我正在尝试在小型c程序中链接gsl。

#include "stdlib.h"
#include "stdio.h"
#include "gsl/gsl_block_float.h"
#include "gsl/gsl_matrix_float.h"

int main(void)
{
  gsl_matrix_float* m = gsl_matrix_float_alloc(2, 2);
  gsl_matrix_float_fprintf(stdout, m, "%f");
}

我正在使用gcc -lgsl -lgslcblas -lm program.c进行编译。我也尝试了gcc $(pkg-config --cflags gsl) $(pkg-config --libs gsl) program.c以及gsl-config。在每种情况下,gcc都会返回

/tmp/cc1wKgXm.o: In function `main':
program.c:(.text+0x13): undefined reference to `gsl_matrix_float_alloc'
program.c:(.text+0x32): undefined reference to `gsl_matrix_float_fprintf'
collect2: error: ld returned 1 exit status

objdump --syms /usr/lib/libgsl.so | grep gsl_matrix_float返回正确的符号,就像我的标题一样。一切都在/usr/lib/usr/include我做错了什么?

1 个答案:

答案 0 :(得分:2)

我是从ubuntu论坛得到的。 gcc的参数顺序可能是问题

gcc -o program program.c `gsl-config --cflags --libs`