是否有标准命令在GCC命令行中链接多个库

我试图将由用户编写的C文件编译的目标文件“ blas.o”与某些第三方库链接。

它以这种方式工作

$ gcc blas.o -lgsl -lgslcblas   -lm 

但不是这样

$ gcc -lgsl -lgslcblas   -lm blas.o
blas.o: In function `main':
blas.c:(.text+0xf9): undefined reference to `gsl_matrix_view_array'
blas.c:(.text+0x116): undefined reference to `gsl_matrix_view_array'
blas.c:(.text+0x136): undefined reference to `gsl_matrix_view_array'
blas.c:(.text+0x16f): undefined reference to `gsl_blas_dgemm'
collect2: error: ld returned 1 exit status

上面,blas.o取决于链接的库,但不是相反的。我是否可以得出结论,链接器实际上是从命令行从右到左使用符号?我的gcc和ld版本如下:

$gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright info...

$ ld --version
GNU ld (GNU Binutils for Ubuntu) 2.26.1
Copyright info...

我知道链接库和对象的顺序对于某些链接器可能很重要。但是,总的来说,是否存在安全(或称为通用)命令来在GCC命令行中链接库?例如,是否存在所有链接程序都遵守的标准?

A1013737306 回答:是否有标准命令在GCC命令行中链接多个库

  

但是,总的来说,在GCC命令行中是否存在安全(或称为通用)命令来链接库?

是:按正确顺序列出它们。

  

例如,是否存在所有链接程序都遵守的标准?

是:正确顺序。

要了解正确的顺序,请阅读this

本文链接:https://www.f2er.com/3137444.html

大家都在问