使用mingw64的寄存器不正确

时间:2013-02-20 17:57:37

标签: mingw-w64

我正在尝试使用sezero的mingw64编译我在网上找到的项目,但我一直遇到以下问题

C:\Users\Me\AppData\LocalTemp\ccPmAPBy.s: Assembler messages:
C:\Users\Me\AppData\LocalTemp\ccPmAPBy.s:1668: Error: incorrect register `%edx' used with `q' suffix
logreg.cpp: In function 'double logreg_cdn_Ldiff(double, int, double)':
logreg.cpp:103:18: error: 'isnan' was not declared in this scope
mm_lasso.cpp: In function 'int main(int, char**)':
mm_lasso.cpp:53:60: error: 'getopt' was not declared in this scope
mm_lasso.cpp:57:31: error: 'optarg' was not declared in this scope

我正在运行的命令是:

x86_64-w64-mingw32-gcc -Wall -pthread -fopenmp lasso.cpp logreg.cpp read_matrix_market.cpp mmio.c mm_lasso.cpp write_matrix_market.cpp shared.cpp -o mm_lasso -lgomp -O3

我想知道是否有人之前有过这个问题并且知道如何修复它?

1 个答案:

答案 0 :(得分:0)

嗯,我知道在rubenvb的mingw64中,他们对trunk \ mingw-w64-headers \ crt \ math.h中的isnan函数进行了更改(参见http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64/trunk/mingw-w64-headers/crt/math.h?r1=3066&r2=5518),显然是专门处理x64问题。