Compiling dhex under MINGW64? The Next CEO of Stack Overflowprintf and %llx in GCC under Windows 64xEmbedding DLLs in a compiled executableset global gcc default search pathsCompiling Win64 versions of GLFW under mingw64Printf long long int in C with GCC?Glib linking error: undefined reference towarning: unknown conversion type character ‘T’ in format [-Wformat]Too many warnings on a C macroCompiling an application for use in highly radioactive environmentsgcc make error on hpcinstalling wgrib2 in mac os sierra

If the heap is initialized for security, then why is the stack uninitialized?

Any way to transfer all permissions from one role to another?

How to write the block matrix in LaTex?

Is a stroke of luck acceptable after a series of unfavorable events?

Why did we only see the N-1 starfighters in one film?

Opposite of a diet

What can we do to stop prior company from asking us questions?

What size rim is OK?

Anatomically Correct Strange Women In Ponds Distributing Swords

If I blow insulation everywhere in my attic except the door trap, will heat escape through it?

Can the Reverse Gravity spell affect the Meteor Swarm spell?

Can a single photon have an energy density?

When did Lisp start using symbols for arithmetic?

Is it my responsibility to learn a new technology in my own time my employer wants to implement?

Is it okay to store user locations?

Implement the Thanos sorting algorithm

How to count occurrences of text in a file?

Increase performance creating Mandelbrot set in python

Why does GHC infer a monomorphic type here, even with MonomorphismRestriction disabled?

Horror movie/show or scene where a horse creature opens its mouth really wide and devours a man in a stables

Does the Brexit deal have to be agreed by both Houses?

Science fiction novels about a solar system spanning civilisation where people change their bodies at will

The King's new dress

What does this shorthand mean?



Compiling dhex under MINGW64?



The Next CEO of Stack Overflowprintf and %llx in GCC under Windows 64xEmbedding DLLs in a compiled executableset global gcc default search pathsCompiling Win64 versions of GLFW under mingw64Printf long long int in C with GCC?Glib linking error: undefined reference towarning: unknown conversion type character ‘T’ in format [-Wformat]Too many warnings on a C macroCompiling an application for use in highly radioactive environmentsgcc make error on hpcinstalling wgrib2 in mac os sierra










0















I've downloaded dhex_0.69.tar.gz from http://www.dettus.net/dhex/ and unpacked it. The Readme says simply to run make.



When I try to build it in MSYS2 shell on Windows 10, compilation and linking proceed without any problems, I get an .exe, which works fine:



user@PC MSYS /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses


However, this .exe will then depend on msys-ncursesw6.dll and msys-2.0.dll when ran outside of the MSYS shell (so, when ran in Command Prompt cmd.exe, which does raise an error - or in Power Shell, which does not raise an error; the program simply exits there).



So, I wanted to try and build it in MINGW64. Compilation completes, but with warning - and linking fails due to undefined reference to '_impure_ptr':



user@PC MINGW64 /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
correlation.c: In function 'find_longestmatch':
correlation.c:41:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:41:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_bestmatch':
correlation.c:129:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:129:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_mindiff':
correlation.c:210:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:210:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
input.c: In function 'decinput':
input.c:116:27: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(tmpbuf,21,"%20lli",newval);
^
input.c:116:22: warning: too many arguments for format [-Wformat-extra-args]
snprintf(tmpbuf,21,"%20lli",newval);
^~~~~~~~
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
main.c: In function 'main':
main.c:765:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^
main.c:765:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:765:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:766:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^
main.c:766:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:766:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
markers.c: In function 'writemarkerfile':
markers.c:94:21: warning: unknown conversion type character 'l' in format [-Wformat=]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^
markers.c:94:13: warning: too many arguments for format [-Wformat-extra-args]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~~~~~~
markers.c: In function 'gotomask':
markers.c:170:25: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^
markers.c:170:20: warning: too many arguments for format [-Wformat-extra-args]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
search.c: In function 'searchfor':
search.c:128:52: warning: unknown conversion type character 'l' in format [-Wformat=]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^
search.c:128:46: warning: too many arguments for format [-Wformat-extra-args]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^~~~~~~~~~~
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses
correlation.o:correlation.c:(.rdata$.refptr._impure_ptr[.refptr._impure_ptr]+0x0): undefined reference to `_impure_ptr'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:27: dhex] Error 1


Would anyone know what I need to do, in order to have dhex compiled under MINGW64 (so it does not depend on MSYS dlls anymore)?










share|improve this question
























  • Possible duplicate of printf and %llx in GCC under Windows 64x

    – Mike Kinghan
    Mar 7 at 17:16











  • I posted an answer below. Please click the check mark to accept it if it answers your question, or let me know what's wrong.

    – David Grayson
    Mar 25 at 17:27















0















I've downloaded dhex_0.69.tar.gz from http://www.dettus.net/dhex/ and unpacked it. The Readme says simply to run make.



When I try to build it in MSYS2 shell on Windows 10, compilation and linking proceed without any problems, I get an .exe, which works fine:



user@PC MSYS /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses


However, this .exe will then depend on msys-ncursesw6.dll and msys-2.0.dll when ran outside of the MSYS shell (so, when ran in Command Prompt cmd.exe, which does raise an error - or in Power Shell, which does not raise an error; the program simply exits there).



So, I wanted to try and build it in MINGW64. Compilation completes, but with warning - and linking fails due to undefined reference to '_impure_ptr':



user@PC MINGW64 /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
correlation.c: In function 'find_longestmatch':
correlation.c:41:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:41:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_bestmatch':
correlation.c:129:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:129:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_mindiff':
correlation.c:210:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:210:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
input.c: In function 'decinput':
input.c:116:27: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(tmpbuf,21,"%20lli",newval);
^
input.c:116:22: warning: too many arguments for format [-Wformat-extra-args]
snprintf(tmpbuf,21,"%20lli",newval);
^~~~~~~~
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
main.c: In function 'main':
main.c:765:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^
main.c:765:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:765:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:766:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^
main.c:766:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:766:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
markers.c: In function 'writemarkerfile':
markers.c:94:21: warning: unknown conversion type character 'l' in format [-Wformat=]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^
markers.c:94:13: warning: too many arguments for format [-Wformat-extra-args]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~~~~~~
markers.c: In function 'gotomask':
markers.c:170:25: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^
markers.c:170:20: warning: too many arguments for format [-Wformat-extra-args]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
search.c: In function 'searchfor':
search.c:128:52: warning: unknown conversion type character 'l' in format [-Wformat=]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^
search.c:128:46: warning: too many arguments for format [-Wformat-extra-args]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^~~~~~~~~~~
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses
correlation.o:correlation.c:(.rdata$.refptr._impure_ptr[.refptr._impure_ptr]+0x0): undefined reference to `_impure_ptr'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:27: dhex] Error 1


Would anyone know what I need to do, in order to have dhex compiled under MINGW64 (so it does not depend on MSYS dlls anymore)?










share|improve this question
























  • Possible duplicate of printf and %llx in GCC under Windows 64x

    – Mike Kinghan
    Mar 7 at 17:16











  • I posted an answer below. Please click the check mark to accept it if it answers your question, or let me know what's wrong.

    – David Grayson
    Mar 25 at 17:27













0












0








0


0






I've downloaded dhex_0.69.tar.gz from http://www.dettus.net/dhex/ and unpacked it. The Readme says simply to run make.



When I try to build it in MSYS2 shell on Windows 10, compilation and linking proceed without any problems, I get an .exe, which works fine:



user@PC MSYS /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses


However, this .exe will then depend on msys-ncursesw6.dll and msys-2.0.dll when ran outside of the MSYS shell (so, when ran in Command Prompt cmd.exe, which does raise an error - or in Power Shell, which does not raise an error; the program simply exits there).



So, I wanted to try and build it in MINGW64. Compilation completes, but with warning - and linking fails due to undefined reference to '_impure_ptr':



user@PC MINGW64 /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
correlation.c: In function 'find_longestmatch':
correlation.c:41:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:41:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_bestmatch':
correlation.c:129:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:129:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_mindiff':
correlation.c:210:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:210:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
input.c: In function 'decinput':
input.c:116:27: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(tmpbuf,21,"%20lli",newval);
^
input.c:116:22: warning: too many arguments for format [-Wformat-extra-args]
snprintf(tmpbuf,21,"%20lli",newval);
^~~~~~~~
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
main.c: In function 'main':
main.c:765:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^
main.c:765:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:765:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:766:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^
main.c:766:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:766:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
markers.c: In function 'writemarkerfile':
markers.c:94:21: warning: unknown conversion type character 'l' in format [-Wformat=]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^
markers.c:94:13: warning: too many arguments for format [-Wformat-extra-args]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~~~~~~
markers.c: In function 'gotomask':
markers.c:170:25: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^
markers.c:170:20: warning: too many arguments for format [-Wformat-extra-args]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
search.c: In function 'searchfor':
search.c:128:52: warning: unknown conversion type character 'l' in format [-Wformat=]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^
search.c:128:46: warning: too many arguments for format [-Wformat-extra-args]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^~~~~~~~~~~
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses
correlation.o:correlation.c:(.rdata$.refptr._impure_ptr[.refptr._impure_ptr]+0x0): undefined reference to `_impure_ptr'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:27: dhex] Error 1


Would anyone know what I need to do, in order to have dhex compiled under MINGW64 (so it does not depend on MSYS dlls anymore)?










share|improve this question
















I've downloaded dhex_0.69.tar.gz from http://www.dettus.net/dhex/ and unpacked it. The Readme says simply to run make.



When I try to build it in MSYS2 shell on Windows 10, compilation and linking proceed without any problems, I get an .exe, which works fine:



user@PC MSYS /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses


However, this .exe will then depend on msys-ncursesw6.dll and msys-2.0.dll when ran outside of the MSYS shell (so, when ran in Command Prompt cmd.exe, which does raise an error - or in Power Shell, which does not raise an error; the program simply exits there).



So, I wanted to try and build it in MINGW64. Compilation completes, but with warning - and linking fails due to undefined reference to '_impure_ptr':



user@PC MINGW64 /d/src/dhex_0.69
$ make
gcc buffers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc configfile.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc correlation.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
correlation.c: In function 'find_longestmatch':
correlation.c:41:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:41:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_bestmatch':
correlation.c:129:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:129:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
correlation.c: In function 'find_mindiff':
correlation.c:210:28: warning: unknown conversion type character 'l' in format [-Wformat=]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^
correlation.c:210:23: warning: too many arguments for format [-Wformat-extra-args]
else fprintf(stderr,"%16llir",((tInt64)buf1->bufsize-pos1));
^~~~~~~~~~
gcc gpl.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc hexcalc.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc input.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
input.c: In function 'decinput':
input.c:116:27: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(tmpbuf,21,"%20lli",newval);
^
input.c:116:22: warning: too many arguments for format [-Wformat-extra-args]
snprintf(tmpbuf,21,"%20lli",newval);
^~~~~~~~
gcc machine_type.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc main.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
main.c: In function 'main':
main.c:765:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^
main.c:765:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:765:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch1) fprintf(stderr,"%lli occurances found in %sn",search1.occurancesfound,buf1->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:766:36: warning: unknown conversion type character 'l' in format [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^
main.c:766:60: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'tInt64' aka 'long long int' [-Wformat=]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
~^ ~~~~~~~~~~~~~~~~~~~~~~~
%I64d
main.c:766:33: warning: too many arguments for format [-Wformat-extra-args]
if (gosearch2) fprintf(stderr,"%lli occurances found in %sn",search2.occurancesfound,buf2->filename);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc markers.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
markers.c: In function 'writemarkerfile':
markers.c:94:21: warning: unknown conversion type character 'l' in format [-Wformat=]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^
markers.c:94:13: warning: too many arguments for format [-Wformat-extra-args]
fprintf(f,"%c%016llXn",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~~~~~~
markers.c: In function 'gotomask':
markers.c:170:25: warning: unknown conversion type character 'l' in format [-Wformat=]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^
markers.c:170:20: warning: too many arguments for format [-Wformat-extra-args]
snprintf(buf,17,"%c%llx",markers->relative[i],markers->cursorpos[i]);
^~~~~~~~
gcc menu.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc output.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc search.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
search.c: In function 'searchfor':
search.c:128:52: warning: unknown conversion type character 'l' in format [-Wformat=]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^
search.c:128:46: warning: too many arguments for format [-Wformat-extra-args]
if (search->writesearchlog) fprintf(fwlog,"%016llxn",(tUInt64)actcursorpos+buf->baseaddr); else done=1;
^~~~~~~~~~~
gcc ui.c -c -I. -I/usr/include -I/usr/local/include -I/usr/include/ncurses -I/usr/local/include/ncurses -O3 -Wall
gcc -L/usr/lib -L/usr/local/lib -L/usr/lib/ncurses -L/usr/local/lib/ncurses -o dhex buffers.o configfile.o correlation.o gpl.o hexcalc.o input.o machine_type.o main.o markers.o menu.o output.o search.o ui.o -lncurses
correlation.o:correlation.c:(.rdata$.refptr._impure_ptr[.refptr._impure_ptr]+0x0): undefined reference to `_impure_ptr'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:27: dhex] Error 1


Would anyone know what I need to do, in order to have dhex compiled under MINGW64 (so it does not depend on MSYS dlls anymore)?







gcc linker mingw-w64 msys2






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 7 at 14:08







sdbbs

















asked Mar 7 at 13:56









sdbbssdbbs

772523




772523












  • Possible duplicate of printf and %llx in GCC under Windows 64x

    – Mike Kinghan
    Mar 7 at 17:16











  • I posted an answer below. Please click the check mark to accept it if it answers your question, or let me know what's wrong.

    – David Grayson
    Mar 25 at 17:27

















  • Possible duplicate of printf and %llx in GCC under Windows 64x

    – Mike Kinghan
    Mar 7 at 17:16











  • I posted an answer below. Please click the check mark to accept it if it answers your question, or let me know what's wrong.

    – David Grayson
    Mar 25 at 17:27
















Possible duplicate of printf and %llx in GCC under Windows 64x

– Mike Kinghan
Mar 7 at 17:16





Possible duplicate of printf and %llx in GCC under Windows 64x

– Mike Kinghan
Mar 7 at 17:16













I posted an answer below. Please click the check mark to accept it if it answers your question, or let me know what's wrong.

– David Grayson
Mar 25 at 17:27





I posted an answer below. Please click the check mark to accept it if it answers your question, or let me know what's wrong.

– David Grayson
Mar 25 at 17:27












1 Answer
1






active

oldest

votes


















0














I downloaded the package in question and figured out how to compile it with the MinGW-w64 64-bit toolchain provided by MSYS2.



First of all, install the relevant development tools and libraries:



pacman -S base-devel mingw-w64-x86_64-ncurses,toolchain


Next, you need to edit the Makefile that comes with the package. The LDFLAGS, CPPFLAGS, and CFLAGS values must be modified to the following:



LDFLAGS=
CPPFLAGS= -I$(MINGW_PREFIX)/include/ncurses
CFLAGS= -D__USE_MINGW_ANSI_STDIO=1 -O3 -Wall


Some explanation: It is very bad that the Makefile has hardcoded paths in LDFLAGS and CPPFLAGS, because if you were to use those paths then you would be using files from another toolchain (the msys-2.0.dll-based one). So we need to get to get rid of those. Also, to get rid of all the warnings about printf formatting, we must supply the -D__USE_MINGW_ANSI_STDIO argument.



Then, just run make.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55045502%2fcompiling-dhex-under-mingw64%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    I downloaded the package in question and figured out how to compile it with the MinGW-w64 64-bit toolchain provided by MSYS2.



    First of all, install the relevant development tools and libraries:



    pacman -S base-devel mingw-w64-x86_64-ncurses,toolchain


    Next, you need to edit the Makefile that comes with the package. The LDFLAGS, CPPFLAGS, and CFLAGS values must be modified to the following:



    LDFLAGS=
    CPPFLAGS= -I$(MINGW_PREFIX)/include/ncurses
    CFLAGS= -D__USE_MINGW_ANSI_STDIO=1 -O3 -Wall


    Some explanation: It is very bad that the Makefile has hardcoded paths in LDFLAGS and CPPFLAGS, because if you were to use those paths then you would be using files from another toolchain (the msys-2.0.dll-based one). So we need to get to get rid of those. Also, to get rid of all the warnings about printf formatting, we must supply the -D__USE_MINGW_ANSI_STDIO argument.



    Then, just run make.






    share|improve this answer



























      0














      I downloaded the package in question and figured out how to compile it with the MinGW-w64 64-bit toolchain provided by MSYS2.



      First of all, install the relevant development tools and libraries:



      pacman -S base-devel mingw-w64-x86_64-ncurses,toolchain


      Next, you need to edit the Makefile that comes with the package. The LDFLAGS, CPPFLAGS, and CFLAGS values must be modified to the following:



      LDFLAGS=
      CPPFLAGS= -I$(MINGW_PREFIX)/include/ncurses
      CFLAGS= -D__USE_MINGW_ANSI_STDIO=1 -O3 -Wall


      Some explanation: It is very bad that the Makefile has hardcoded paths in LDFLAGS and CPPFLAGS, because if you were to use those paths then you would be using files from another toolchain (the msys-2.0.dll-based one). So we need to get to get rid of those. Also, to get rid of all the warnings about printf formatting, we must supply the -D__USE_MINGW_ANSI_STDIO argument.



      Then, just run make.






      share|improve this answer

























        0












        0








        0







        I downloaded the package in question and figured out how to compile it with the MinGW-w64 64-bit toolchain provided by MSYS2.



        First of all, install the relevant development tools and libraries:



        pacman -S base-devel mingw-w64-x86_64-ncurses,toolchain


        Next, you need to edit the Makefile that comes with the package. The LDFLAGS, CPPFLAGS, and CFLAGS values must be modified to the following:



        LDFLAGS=
        CPPFLAGS= -I$(MINGW_PREFIX)/include/ncurses
        CFLAGS= -D__USE_MINGW_ANSI_STDIO=1 -O3 -Wall


        Some explanation: It is very bad that the Makefile has hardcoded paths in LDFLAGS and CPPFLAGS, because if you were to use those paths then you would be using files from another toolchain (the msys-2.0.dll-based one). So we need to get to get rid of those. Also, to get rid of all the warnings about printf formatting, we must supply the -D__USE_MINGW_ANSI_STDIO argument.



        Then, just run make.






        share|improve this answer













        I downloaded the package in question and figured out how to compile it with the MinGW-w64 64-bit toolchain provided by MSYS2.



        First of all, install the relevant development tools and libraries:



        pacman -S base-devel mingw-w64-x86_64-ncurses,toolchain


        Next, you need to edit the Makefile that comes with the package. The LDFLAGS, CPPFLAGS, and CFLAGS values must be modified to the following:



        LDFLAGS=
        CPPFLAGS= -I$(MINGW_PREFIX)/include/ncurses
        CFLAGS= -D__USE_MINGW_ANSI_STDIO=1 -O3 -Wall


        Some explanation: It is very bad that the Makefile has hardcoded paths in LDFLAGS and CPPFLAGS, because if you were to use those paths then you would be using files from another toolchain (the msys-2.0.dll-based one). So we need to get to get rid of those. Also, to get rid of all the warnings about printf formatting, we must supply the -D__USE_MINGW_ANSI_STDIO argument.



        Then, just run make.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 7 at 17:52









        David GraysonDavid Grayson

        58.2k20108150




        58.2k20108150





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55045502%2fcompiling-dhex-under-mingw64%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

            Алба-Юлія

            Захаров Федір Захарович