0

我正在尝试在 Windows 10 系统上编译 openBLAS (0.2.18 from here )。我已经安装了 mingw、msys(使用 perl、gfortran 等)和 mingw-w64(基本上按照这里的过程)。

进入编译,我运行得到以下错误:

gcc.exe:错误:无法识别的命令行选项“--exclude-libs=libpthread.a”

似乎“库名称可以用逗号或冒号分隔”并且不接受使用“=”。所以我试图弄清楚这个命令行选项是如何/在哪里被指定的,包括在源目录中搜索“exclude”、“libpthread”并查看各种makefile,但没有任何运气。

我对没有正确语法的命令行选项是否正确?有没有人有任何想法如何追踪它被指定的位置,或者有任何关于 make 如何生成这样一个命令行选项的参考?

作为参考,整个命令是:

gcc -O2 -DMS_ABI -DMAX_STACK_ALLOC=2048 -Wall -m64 -DF_INTERFACE_GFORT -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=8 -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= -DCHAR_NAME=\"_\" -DCHAR_CNAME=\"\" -DNO_AFFINITY -I..  libopenblas.def dllinit.obj \
        -shared -o ../libopenblas.dll -Wl,--out-implib,../libopenblas.dll.a \
        -Wl,--whole-archive ../libopenblas_haswellp-r0.2.18.a -Wl,--no-whole-archive -Lc:/mingw/64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0 -Lc:/mingw/64/bin/../lib/gcc -Lc:/mingw/64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib/../lib -Lc:/mingw/64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../lib -Lc:/mingw/64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/lib -Lc:/mingw/64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../..  -lgfortran -lmingw32 -lmoldname -lmingwex -lmsvcrt -lquadmath -lm -lmingw32 -lmoldname -lmingwex -lmsvcrt -lpthread -lmingw32 -lmoldname -lmingwex -lmsvcrt  --exclude-libs=libpthread.a  -defaultlib:advapi32 -lgfortran -defaultlib:advapi32 -lgfortran

并在make进入目录后发生/c/tcm/xianyi-OpenBLAS-3f6398a/exports

4

1 回答 1

0

--exclude-libs是链接器的一个选项,ld. 您正在将其传递给编译器。要告诉gcc将选项传递给链接器,请在其前面加上-Wl,即

-Wl,--exclude-libs=libpthread.a

就像您对正在传递的所有其他链接器选项所做的那样。

于 2016-06-15T08:18:20.657 回答