compiling windows binary using cygwin fails

193 views
Skip to first unread message

skeept

unread,
May 11, 2013, 7:28:51 PM5/11/13
to vim...@googlegroups.com
I am trying to build windows binary using cygwin. The command line and the error I get is bellow.

make -f Make_cyg.mak SHELL=bash CC=i686-pc-cygwin-gcc CXX=i686-pc-cygwin-g++ RC=windres ARCH=i686 CROSS_COMPILE=x86_64-w64-mingw32- USEDLL=no PYTHON=/cygdrive/c/Python27 PYTHON_VER=27 DYNAMIC_PYTHON=yes PERL=/cygdrive/c/htemp/Perl PERL_VER=516 DYNAMIC_PERL=yes GUI=yes gvim.exe

i686-pc-cygwin-gcc -c -O3 -fomit-frame-pointer -freg-struct-return -fno-strength-reduce -DWIN32 -DHAVE_PATHDEF -DFEAT_BIG -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -DFEAT_PERL -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl516.dll\" -DFEAT_PYTHON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DDYNAMIC_GETTEXT -DDYNAMIC_ICONV -DFEAT_MBYTE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DFEAT_GUI_W32 -DFEAT_CLIPBOARD -march=i686 -Iproto -I/cygdrive/c/htemp/Perl/lib/CORE -s eval.c -o gobj/eval.o
eval.c: In function ‘modify_fname’:
eval.c:23845:16: error: ‘_MAX_PATH’ undeclared (first use in this function)
eval.c:23845:16: note: each undeclared identifier is reported only once for each function it appears in
Make_cyg.mak:634: recipe for target `gobj/eval.o' failed
make: *** [gobj/eval.o] Error 1

The same happens if I use Make_ming.mak instead of Make_cyg.mak.

I am not sure if something is wrong with my cygwin but I have compiled vim in my computer like this before.

Any ideas of what is going wrong?

Thanks,

Jorge

tux-

unread,
May 11, 2013, 7:35:21 PM5/11/13
to skeept
_MAX_PATH is actually defined (rather exclusively) in Make_cyg.mak
(line 438) and reused subsequently. As a quick workaround, you could
just specify its actual value. But I'd bet something in the compiler
call is wrong for you.

Ken Takata

unread,
May 11, 2013, 8:00:46 PM5/11/13
to vim...@googlegroups.com
Hi,

2013/05/12 Sun 8:28:51 UTC+9 skeept wrote:
> I am trying to build windows binary using cygwin. The command line and the error I get is bellow.
>
> make -f Make_cyg.mak SHELL=bash CC=i686-pc-cygwin-gcc CXX=i686-pc-cygwin-g++ RC=windres ARCH=i686 CROSS_COMPILE=x86_64-w64-mingw32- USEDLL=no PYTHON=/cygdrive/c/Python27 PYTHON_VER=27 DYNAMIC_PYTHON=yes PERL=/cygdrive/c/htemp/Perl PERL_VER=516 DYNAMIC_PERL=yes GUI=yes gvim.exe

If you want to build a Win32 binary, use i686-pc-mingw32-gcc or
i686-w64-mingw-gcc, not i686-pc-cygwin-gcc.
i686-pc-cygwin-gcc is a compiler for building cygwin binary.

Thanks,
Ken Takata

skeept

unread,
May 12, 2013, 12:04:45 PM5/12/13
to vim...@googlegroups.com

> If you want to build a Win32 binary, use i686-pc-mingw32-gcc or
> i686-w64-mingw-gcc, not i686-pc-cygwin-gcc.
> i686-pc-cygwin-gcc is a compiler for building cygwin binary.
>
> Thanks,
> Ken Takata


Thanks for you help.
Indeed changing to a different compiler name allows me to build gvim, although it fails when it tries to build gvimext:

make -f Make_cyg.mak SHELL=bash CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ RC=i686-w64-mingw32-windres ARCH=i686 CROSS_COMPILE=x86_64-w64-mingw32- USEDLL=no PYTHON=/cygdrive/c/Python27 PYTHON_VER=27 DYNAMIC_PYTHON=yes PERL=/cygdrive/c/htemp/Perl PERL_VER=516 DYNAMIC_PERL=yes GUI=yes
i686-w64-mingw32-gcc -O3 -fomit-frame-pointer -freg-struct-return -fno-strength-reduce -DWIN32 -DHAVE_PATHDEF -DFEAT_BIG -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -DFEAT_PERL -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl516.dll\" -DFEAT_PYTHON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DDYNAMIC_GETTEXT -DDYNAMIC_ICONV -DFEAT_MBYTE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DFEAT_GUI_W32 -DFEAT_CLIPBOARD -march=i686 -Iproto -I/cygdrive/c/htemp/Perl/lib/CORE -s -o gvim.exe gobj/blowfish.o gobj/buffer.o gobj/charset.o gobj/diff.o gobj/digraph.o gobj/edit.o gobj/eval.o gobj/ex_cmds.o gobj/ex_cmds2.o gobj/ex_docmd.o gobj/ex_eval.o gobj/ex_getln.o gobj/fileio.o gobj/fold.o gobj/getchar.o gobj/hardcopy.o gobj/hashtab.o gobj/main.o gobj/mark.o gobj/memfile.o gobj/memline.o gobj/menu.o gobj/message.o gobj/misc1.o gobj/misc2.o gobj/move.o gobj/mbyte.o gobj/normal.o gobj/ops.o gobj/option.o gobj/os_win32.o gobj/os_mswin.o gobj/winclip.o gobj/pathdef.o gobj/popupmnu.o gobj/quickfix.o gobj/regexp.o gobj/screen.o gobj/search.o gobj/sha256.o gobj/spell.o gobj/syntax.o gobj/tag.o gobj/term.o gobj/ui.o gobj/undo.o gobj/version.o gobj/vimrc.o gobj/window.o gobj/if_perl.o gobj/if_python.o gobj/if_cscope.o gobj/netbeans.o gobj/gui.o gobj/gui_w32.o gobj/gui_beval.o gobj/os_w32exe.o -luuid -lole32 -lwsock32 -mwindows -lcomctl32 -lversion
make -C GvimExt -f Make_cyg.mak CROSS_COMPILE=x86_64-w64-mingw32-
make[1]: Entering directory `/cygdrive/c/htemp/vim/src/GvimExt'
i686-w64-mingw32-g++ -shared -O2 -mno-cygwin -s -o gvimext.dll \
-Wl,--enable-auto-image-base \
-Wl,--enable-auto-import \
-Wl,--whole-archive \
gvimext.o gvimext.res gvimext_ming.def \
-Wl,--no-whole-archive \
-luuid
gvimext.res: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Make_cyg.mak:62: recipe for target `gvimext.dll' failed
make[1]: *** [gvimext.dll] Error 1
make[1]: Leaving directory `/cygdrive/c/htemp/vim/src/GvimExt'
Make_cyg.mak:589: recipe for target `GvimExt/gvimext.dll' failed
make: *** [GvimExt/gvimext.dll] Error 2

This is not a big deal, since the program I really wanted to build is the gvim binary.

Thanks,
Jorge
Reply all
Reply to author
Forward
0 new messages