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
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
add a comment |
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
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
add a comment |
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
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
gcc linker mingw-w64 msys2
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
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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.
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
add a comment |
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.
add a comment |
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.
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.
answered Mar 7 at 17:52
David GraysonDavid Grayson
58.2k20108150
58.2k20108150
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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