Skip to content

Unable to build libavrdude dynamic library under Windows and macOS #1414

Open
@mcuee

Description

@mcuee

From #952

As of now, there is no way to build shared libavrdude.dll under Windows, either with MinGW or MSVC.

[68/70] cmd.exe /C "cd . && C:\msys64\mingw64\bin\cc.exe -O2 -g -DNDEBUG  -Wl,-undefined,dynamic_lookup -shared -o src\libavrdude.dll -Wl,--out-implib,src\liblibavrdude.dll.a -Wl,--major-image-version,1,--minor-image-version,0 src/CMakeFiles/libavrdude.dir/arduino.c.obj src/CMakeFiles/libavrdude.dir/avr.c.obj src/CMakeFiles/libavrdude.dir/avr910.c.obj src/CMakeFiles/libavrdude.dir/avrcache.c.obj src/CMakeFiles/libavrdude.dir/avrftdi.c.obj src/CMakeFiles/libavrdude.dir/avrftdi_tpi.c.obj src/CMakeFiles/libavrdude.dir/avrintel.c.obj src/CMakeFiles/libavrdude.dir/avrpart.c.obj src/CMakeFiles/libavrdude.dir/bitbang.c.obj src/CMakeFiles/libavrdude.dir/buspirate.c.obj src/CMakeFiles/libavrdude.dir/butterfly.c.obj src/CMakeFiles/libavrdude.dir/ch341a.c.obj src/CMakeFiles/libavrdude.dir/config.c.obj src/CMakeFiles/libavrdude.dir/confwin.c.obj src/CMakeFiles/libavrdude.dir/crc16.c.obj src/CMakeFiles/libavrdude.dir/dfu.c.obj src/CMakeFiles/libavrdude.dir/dryrun.c.obj src/CMakeFiles/libavrdude.dir/fileio.c.obj src/CMakeFiles/libavrdude.dir/flip1.c.obj src/CMakeFiles/libavrdude.dir/flip2.c.obj src/CMakeFiles/libavrdude.dir/ft245r.c.obj src/CMakeFiles/libavrdude.dir/jtagmkI.c.obj src/CMakeFiles/libavrdude.dir/jtagmkII.c.obj src/CMakeFiles/libavrdude.dir/jtag3.c.obj src/CMakeFiles/libavrdude.dir/linuxgpio.c.obj src/CMakeFiles/libavrdude.dir/linuxspi.c.obj src/CMakeFiles/libavrdude.dir/lists.c.obj src/CMakeFiles/libavrdude.dir/micronucleus.c.obj src/CMakeFiles/libavrdude.dir/par.c.obj src/CMakeFiles/libavrdude.dir/pgm.c.obj src/CMakeFiles/libavrdude.dir/pgm_type.c.obj src/CMakeFiles/libavrdude.dir/pickit2.c.obj src/CMakeFiles/libavrdude.dir/pindefs.c.obj src/CMakeFiles/libavrdude.dir/ppi.c.obj src/CMakeFiles/libavrdude.dir/ppiwin.c.obj src/CMakeFiles/libavrdude.dir/serbb_posix.c.obj src/CMakeFiles/libavrdude.dir/serbb_win32.c.obj src/CMakeFiles/libavrdude.dir/ser_avrdoper.c.obj src/CMakeFiles/libavrdude.dir/ser_posix.c.obj src/CMakeFiles/libavrdude.dir/ser_win32.c.obj src/CMakeFiles/libavrdude.dir/serialupdi.c.obj src/CMakeFiles/libavrdude.dir/stk500.c.obj src/CMakeFiles/libavrdude.dir/stk500v2.c.obj src/CMakeFiles/libavrdude.dir/stk500generic.c.obj src/CMakeFiles/libavrdude.dir/strutil.c.obj src/CMakeFiles/libavrdude.dir/teensy.c.obj src/CMakeFiles/libavrdude.dir/term.c.obj src/CMakeFiles/libavrdude.dir/updi_link.c.obj src/CMakeFiles/libavrdude.dir/updi_nvm.c.obj src/CMakeFiles/libavrdude.dir/updi_readwrite.c.obj src/CMakeFiles/libavrdude.dir/updi_state.c.obj src/CMakeFiles/libavrdude.dir/urclock.c.obj src/CMakeFiles/libavrdude.dir/usbasp.c.obj src/CMakeFiles/libavrdude.dir/usb_hidapi.c.obj src/CMakeFiles/libavrdude.dir/usb_libusb.c.obj src/CMakeFiles/libavrdude.dir/usbtiny.c.obj src/CMakeFiles/libavrdude.dir/update.c.obj src/CMakeFiles/libavrdude.dir/wiring.c.obj src/CMakeFiles/libavrdude.dir/xbee.c.obj src/CMakeFiles/libavrdude.dir/__/lexer.c.obj src/CMakeFiles/libavrdude.dir/__/config_gram.c.obj  -lm  C:/msys64/mingw64/lib/libelf.a  C:/msys64/mingw64/lib/libusb.dll.a  C:/msys64/mingw64/lib/libusb-1.0.dll.a  C:/msys64/mingw64/lib/libhidapi.dll.a  C:/msys64/mingw64/lib/libftdi1.dll.a  C:/msys64/mingw64/lib/libreadline.dll.a  C:/msys64/mingw64/lib/libncurses.a  -lsetupapi  -lhid  -lws2_32  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
FAILED: src/libavrdude.dll src/liblibavrdude.dll.a
cmd.exe /C "cd . && C:\msys64\mingw64\bin\cc.exe -O2 -g -DNDEBUG  -Wl,-undefined,dynamic_lookup -shared -o src\libavrdude.dll -Wl,--out-implib,src\liblibavrdude.dll.a -Wl,--major-image-version,1,--minor-image-version,0 src/CMakeFiles/libavrdude.dir/arduino.c.obj src/CMakeFiles/libavrdude.dir/avr.c.obj src/CMakeFiles/libavrdude.dir/avr910.c.obj src/CMakeFiles/libavrdude.dir/avrcache.c.obj src/CMakeFiles/libavrdude.dir/avrftdi.c.obj src/CMakeFiles/libavrdude.dir/avrftdi_tpi.c.obj src/CMakeFiles/libavrdude.dir/avrintel.c.obj src/CMakeFiles/libavrdude.dir/avrpart.c.obj src/CMakeFiles/libavrdude.dir/bitbang.c.obj src/CMakeFiles/libavrdude.dir/buspirate.c.obj src/CMakeFiles/libavrdude.dir/butterfly.c.obj src/CMakeFiles/libavrdude.dir/ch341a.c.obj src/CMakeFiles/libavrdude.dir/config.c.obj src/CMakeFiles/libavrdude.dir/confwin.c.obj src/CMakeFiles/libavrdude.dir/crc16.c.obj src/CMakeFiles/libavrdude.dir/dfu.c.obj src/CMakeFiles/libavrdude.dir/dryrun.c.obj src/CMakeFiles/libavrdude.dir/fileio.c.obj src/CMakeFiles/libavrdude.dir/flip1.c.obj src/CMakeFiles/libavrdude.dir/flip2.c.obj src/CMakeFiles/libavrdude.dir/ft245r.c.obj src/CMakeFiles/libavrdude.dir/jtagmkI.c.obj src/CMakeFiles/libavrdude.dir/jtagmkII.c.obj src/CMakeFiles/libavrdude.dir/jtag3.c.obj src/CMakeFiles/libavrdude.dir/linuxgpio.c.obj src/CMakeFiles/libavrdude.dir/linuxspi.c.obj src/CMakeFiles/libavrdude.dir/lists.c.obj src/CMakeFiles/libavrdude.dir/micronucleus.c.obj src/CMakeFiles/libavrdude.dir/par.c.obj src/CMakeFiles/libavrdude.dir/pgm.c.obj src/CMakeFiles/libavrdude.dir/pgm_type.c.obj src/CMakeFiles/libavrdude.dir/pickit2.c.obj src/CMakeFiles/libavrdude.dir/pindefs.c.obj src/CMakeFiles/libavrdude.dir/ppi.c.obj src/CMakeFiles/libavrdude.dir/ppiwin.c.obj src/CMakeFiles/libavrdude.dir/serbb_posix.c.obj src/CMakeFiles/libavrdude.dir/serbb_win32.c.obj src/CMakeFiles/libavrdude.dir/ser_avrdoper.c.obj src/CMakeFiles/libavrdude.dir/ser_posix.c.obj src/CMakeFiles/libavrdude.dir/ser_win32.c.obj src/CMakeFiles/libavrdude.dir/serialupdi.c.obj src/CMakeFiles/libavrdude.dir/stk500.c.obj src/CMakeFiles/libavrdude.dir/stk500v2.c.obj src/CMakeFiles/libavrdude.dir/stk500generic.c.obj src/CMakeFiles/libavrdude.dir/strutil.c.obj src/CMakeFiles/libavrdude.dir/teensy.c.obj src/CMakeFiles/libavrdude.dir/term.c.obj src/CMakeFiles/libavrdude.dir/updi_link.c.obj src/CMakeFiles/libavrdude.dir/updi_nvm.c.obj src/CMakeFiles/libavrdude.dir/updi_readwrite.c.obj src/CMakeFiles/libavrdude.dir/updi_state.c.obj src/CMakeFiles/libavrdude.dir/urclock.c.obj src/CMakeFiles/libavrdude.dir/usbasp.c.obj src/CMakeFiles/libavrdude.dir/usb_hidapi.c.obj src/CMakeFiles/libavrdude.dir/usb_libusb.c.obj src/CMakeFiles/libavrdude.dir/usbtiny.c.obj src/CMakeFiles/libavrdude.dir/update.c.obj src/CMakeFiles/libavrdude.dir/wiring.c.obj src/CMakeFiles/libavrdude.dir/xbee.c.obj src/CMakeFiles/libavrdude.dir/__/lexer.c.obj src/CMakeFiles/libavrdude.dir/__/config_gram.c.obj  -lm  C:/msys64/mingw64/lib/libelf.a  C:/msys64/mingw64/lib/libusb.dll.a  C:/msys64/mingw64/lib/libusb-1.0.dll.a  C:/msys64/mingw64/lib/libhidapi.dll.a  C:/msys64/mingw64/lib/libftdi1.dll.a  C:/msys64/mingw64/lib/libreadline.dll.a  C:/msys64/mingw64/lib/libncurses.a  -lsetupapi  -lhid  -lws2_32  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/arduino.c.obj: in function `arduino_read_sig_bytes':
C:/work/avr/avrdude_test/avrdude_main/src/arduino.c:67: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/arduino.c:68: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/arduino.c:62: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/arduino.c:63: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/arduino.c:47: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/arduino.c.obj:C:/work/avr/avrdude_test/avrdude_main/src/arduino.c:59: more undefined references to `avrdude_message2' follow
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr.c.obj:avr.c:(.rdata$.refptr.quell_progress[.refptr.quell_progress]+0x0): undefined reference to `quell_progress'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr.c.obj:avr.c:(.rdata$.refptr.progname[.refptr.progname]+0x0): undefined reference to `progname'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr.c.obj:avr.c:(.rdata$.refptr.verbose[.refptr.verbose]+0x0): undefined reference to `verbose'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr910.c.obj: in function `avr910_setup':
C:/work/avr/avrdude_test/avrdude_main/src/avr910.c:60: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr910.c.obj: in function `avr910_parseextparms':
C:/work/avr/avrdude_test/avrdude_main/src/avr910.c:320: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/avr910.c:344: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/avr910.c:330: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/avr910.c:324: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr910.c.obj:C:/work/avr/avrdude_test/avrdude_main/src/avr910.c:337: more undefined references to `avrdude_message2' follow
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avr910.c.obj:avr910.c:(.rdata$.refptr.ovsigck[.refptr.ovsigck]+0x0): undefined reference to `ovsigck'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avrcache.c.obj: in function `cacheAddress':
C:/work/avr/avrdude_test/avrdude_main/src/avrcache.c:221: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/avrcache.c:226: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avrcache.c.obj: in function `loadCachePage':
C:/work/avr/avrdude_test/avrdude_main/src/avrcache.c:244: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/avrcache.c:243: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avrcache.c.obj: in function `writeCachePage':
C:/work/avr/avrdude_test/avrdude_main/src/avrcache.c:309: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/avrcache.c.obj:C:/work/avr/avrdude_test/avrdude_main/src/avrcache.c:292: more undefined references to `avrdude_message2' follow
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/dryrun.c.obj:dryrun.c:(.rdata$.refptr.partdesc[.refptr.partdesc]+0x0): undefined reference to `partdesc'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/fileio.c.obj: in function `fileio_fmt_autodetect_fp':
C:/work/avr/avrdude_test/avrdude_main/src/fileio.c:1412: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/fileio.c.obj: in function `fileio_fmt_autodetect':
C:/work/avr/avrdude_test/avrdude_main/src/fileio.c:1422: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/fileio.c.obj: in function `segment_normalise':
C:/work/avr/avrdude_test/avrdude_main/src/fileio.c:1469: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/fileio.c:1460: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/fileio.c.obj: in function `fileio_setparms':
C:/work/avr/avrdude_test/avrdude_main/src/fileio.c:1309: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/fileio.c.obj:C:/work/avr/avrdude_test/avrdude_main/src/fileio.c:1233: more undefined references to `avrdude_message2' follow
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/ft245r.c.obj:ft245r.c:(.rdata$.refptr.progbuf[.refptr.progbuf]+0x0): undefined reference to `progbuf'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/jtagmkI.c.obj: in function `jtagmkI_resync':
C:/work/avr/avrdude_test/avrdude_main/src/jtagmkI.c:247: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/jtagmkI.c:255: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/jtagmkI.c:283: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/jtagmkI.c:292: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/work/avr/avrdude_test/avrdude_main/src/jtagmkI.c:258: undefined reference to `avrdude_message2'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/CMakeFiles/libavrdude.dir/jtagmkI.c.obj:C:/work/avr/avrdude_test/avrdude_main/src/jtagmkI.c:259: more undefined references to `avrdude_message2' follow
collect2.exe: error: ld returned 1 exit status
[69/70] C:\msys64\mingw64\bin\cc.exe -DCONFIG_DIR="\"C:/Program Files (x86)/avrdude/etc\"" -IC:/work/avr/avrdude_test/avrdude_main/build_shared/src -IC:/work/avr/avrdude_test/avrdude_main -IC:/work/avr/avrdude_test/avrdude_main/build_shared -IC:/msys64/mingw64/include/libusb-compat -IC:/work/avr/avrdude_test/avrdude_main/src -O2 -g -DNDEBUG -std=gnu11 -Wall -Wextra -Wno-unused-parameter -MD -MT src/CMakeFiles/avrdude.dir/developer_opts.c.obj -MF src\CMakeFiles\avrdude.dir\developer_opts.c.obj.d -o src/CMakeFiles/avrdude.dir/developer_opts.c.obj -c C:/work/avr/avrdude_test/avrdude_main/src/developer_opts.c
ninja: build stopped: subcommand failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions