i used "make" in "gerbv" dir, and got following error messages:
D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: interface.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:50: multiple definition of toggle_layer'; callbacks.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:50: first defined here
D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: interface.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:44: multiple definition of
CALLBACKS_SAVE_FILE_TYPE'; callbacks.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:44: first defined here
D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: main.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:50: multiple definition of toggle_layer'; callbacks.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:50: first defined here
D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: main.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:44: multiple definition of
CALLBACKS_SAVE_FILE_TYPE'; callbacks.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:44: first defined here
D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: render.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:50: multiple definition of toggle_layer'; callbacks.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:50: first defined here
D:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: render.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:44: multiple definition of
CALLBACKS_SAVE_FILE_TYPE'; callbacks.o:D:\msys64\home\MikeYi\gerbv\src/callbacks.h:44: first defined here
collect2.exe: error: ld returned 1 exit status
make[3]: [Makefile:681: gerbv.exe] Error 1
make[3]: Leaving directory '/home/MikeYi/gerbv/src'
make[2]: [Makefile:556: all] Error 2
make[2]: Leaving directory '/home/MikeYi/gerbv/src'
make[1]: [Makefile:512: all-recursive] Error 1
make[1]: Leaving directory '/home/MikeYi/gerbv'
make: [Makefile:442: all] Error 2
configure comman:
"./configure --prefix=/mingw64 --disable-update-desktop-database"
I see this bug, too. The problem will only occur under new versions of gcc where -fno-common is now the default.
The solution is to modify the definition of CALLBACKS_SAVE_FILE_TYPE. Instead of:
enum { ... } CALLBACKS_SAVE_FILE_TIME;
it should be
enum CALLBACKS_SAVE_FILE_TIME { ... };
There are other enums in the same file that need the same treatment.
More details here: https://stackoverflow.com/questions/65412785/multiple-definition-error-when-linking-c-but-only-on-mingw
I fixed it on my own branch in github: https://github.com/eyal0/gerbv/commit/957603baeaba04a7368391e8d8229cb85fda2ee3