GotoBLAS是一个旧包,但一些很棒的开源项目依赖于它。 我是从github.com获得的:
https://github.com/dofi/gotoBLAS/tree/master/Downloads
但是我遇到了以下编译错误(包含易读性),
gcc -O2 -DEXPRECISION -m128bit-long-double -Wall -m64 -DF_INTERFACE_GFORT
-fPIC -DSMP_SERVER -DMAX_CPU_NUMBER=2 -DASMNAME= -DASMFNAME=_ -DNAME=_
-DCNAME= -DCHAR_NAME=\"_\" -DCHAR_CNAME=\"\" -I.. -w -o linktest linktest.c
../libgoto2_barcelonap-r1.13.so -L/usr/lib/gcc/x86_64-linux-gnu/4.6
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib
-L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu
-L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../..
-l -l -lgfortran -lm -lquadmath -lm -lc && echo OK.
/usr/bin/ld: cannot find -l-l
collect2: ld returned 1 exit status
make[1]: *** [../libgoto2_barcelonap-r1.13.so] Error 1
make[1]: Leaving directory `/root/Downloads/GotoBLAS2/exports'
make: *** [shared] Error 2
我试图跟踪原因并发现每次编译时都会自动生成一个文件Makefile.conf
并设置以下参数(再次,为了易读性而包装,并使用反斜杠的换行符);
FEXTRALIB=-L/usr/lib/gcc/x86_64-linux-gnu/4.6 \
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu \
-L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib \
-L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu \
-L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.6/../../.. \
-l -l -lgfortran -lm -lquadmath -lm -lc
并在GotoBLAS2 / exports / Makefile中,
../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c
$(CC) $(CFLAGS) -shared -o ../$(LIBSONAME) \
-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
-Wl,--retain-symbols-file=linux.def $(EXTRALIB)
$(CC) $(CFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
rm -f linktest
注意-l -l
。我想我还在遗漏一些其他必要的库?他们会是什么?我该如何解决这个问题?