eserte / perl-tk

the perl module Tk
https://metacpan.org/release/Tk
Other
44 stars 31 forks source link

Error when installing Tk-804.032 on Perl Strawberry 5.20.1.1 (Windows 8 - 64 bits) #14

Closed pommedeterresautee closed 9 years ago

pommedeterresautee commented 9 years ago

Hi,

I tried to install Tk through CPAN on Windows and I got the following:

Running Mkbootstrap for Tk::X ()
C:\Strawberry\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 X.bs
C:\Strawberry\perl\bin\perl.exe C:\Strawberry\perl\lib\ExtUtils\xsubpp  -typemap
 C:\STRAWB~1\perl\lib\ExtUtils\typemap -typemap C:/STRAWB~1/cpan/build/Tk-804.03
2-v6u5Sr/Tk/typemap  X.xs > X.xsc && C:\Strawberry\perl\bin\perl.exe -MExtUtils:
:Command -e mv -- X.xsc X.c
gcc -c  -I../.. -I../.. -I../../pTk/mTk/xlib    -s -O2 -DWIN32 -DWIN64 -DCONSERV
ATIVE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_
PERLIO -fwrapv -fno-strict-aliasing -mms-bitfields -s -O2         -DVERSION=\"80
4.032\"         -DXS_VERSION=\"804.032\"  "-IC:\STRAWB~1\perl\lib\CORE"   -Wall
-Wno-implicit-int -Wno-comment -Wno-unused -D__USE_FIXED_PROTOTYPES__ X.c
In file included from C:\STRAWB~1\perl\lib\CORE/hv.h:629,
                 from C:\STRAWB~1\perl\lib\CORE/perl.h:3333,
                 from X.xs:6:
C:\STRAWB~1\perl\lib\CORE/hv_func.h: In function 'S_perl_hash_murmur3':
C:\STRAWB~1\perl\lib\CORE/hv_func.h:391: warning: cast from pointer to integer o
f different size
C:\Strawberry\perl\bin\perl.exe -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Tk::X\", 'DLBASE' => 'X', 'DL_FUNCS' => {  }, 'FUN
CLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
dlltool --def X.def --output-exp dll.exp
g++ -o ..\..\blib\arch\auto\Tk\X\X.xs.dll -Wl,--base-file -Wl,dll.base -mdll -s
-L"C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" X.o   C:\STRAWB~1\perl\lib\C
ORE\libperl520.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libimm32.a C:\STRAWB~1\c\x
86_64-w64-mingw32\lib\libcomctl32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libcomd
lg32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libgdi32.a C:\STRAWB~1\c\x86_64-w64-
mingw32\lib\libmoldname.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libkernel32.a C:\
STRAWB~1\c\x86_64-w64-mingw32\lib\libuser32.a C:\STRAWB~1\c\x86_64-w64-mingw32\l
ib\libgdi32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libwinspool.a C:\STRAWB~1\c\x
86_64-w64-mingw32\lib\libcomdlg32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libadva
pi32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libshell32.a C:\STRAWB~1\c\x86_64-w6
4-mingw32\lib\libole32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\liboleaut32.a C:\S
TRAWB~1\c\x86_64-w64-mingw32\lib\libnetapi32.a C:\STRAWB~1\c\x86_64-w64-mingw32\
lib\libuuid.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libws2_32.a C:\STRAWB~1\c\x86
_64-w64-mingw32\lib\libmpr.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libwinmm.a C:\
STRAWB~1\c\x86_64-w64-mingw32\lib\libversion.a C:\STRAWB~1\c\x86_64-w64-mingw32\
lib\libodbc32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libodbccp32.a C:\STRAWB~1\c
\x86_64-w64-mingw32\lib\libcomctl32.a dll.exp
X.o:X.c:(.text+0x56): undefined reference to `_imp__Perl_xs_apiversion_bootcheck
'
X.o:X.c:(.text+0x88): undefined reference to `_imp__Perl_xs_version_bootcheck'
X.o:X.c:(.text+0xb9): undefined reference to `_imp__Perl_newXS_flags'
X.o:X.c:(.text+0xd7): undefined reference to `_imp__Perl_call_list'
X.o:X.c:(.text+0x16b): undefined reference to `_imp__Perl_sv_2pv_flags'
X.o:X.c:(.text+0x19c): undefined reference to `_imp__Perl_sv_2iv_flags'
X.o:X.c:(.text+0x201): undefined reference to `_imp__Perl_sv_setnv'
X.o:X.c:(.text+0x218): undefined reference to `_imp__Perl_mg_set'
X.o:X.c:(.text+0x252): undefined reference to `_imp__Perl_sv_newmortal'
X.o:X.c:(.text+0x26a6): undefined reference to `_imp__Perl_croak_xs_usage'
collect2: ld returned 1 exit status
dmake:  Error code 129, while making '..\..\blib\arch\auto\Tk\X\X.xs.dll'
dmake:  Error code 255, while making 'subdirs'
dmake.exe:  Error code 255, while making 'subdirs'
  SREZIC/Tk-804.032.tar.gz
  C:\STRAWB~1\c\bin\dmake.exe -- NOT OK
Stopping: 'install' failed for 'Tk'.
Failed during this command:
 SREZIC/Tk-804.032.tar.gz                     : make NO

Any idea if this is a bug or because of my laptop. The installation of Perl is new (no other lib installed, no tweak).

Regards

pommedeterresautee commented 9 years ago

I have made some experiences, and some search.

First I tried to install the dev version, still a error:

C:\STRAWB~1\perl\lib\CORE/hv_func.h: In function 'S_perl_hash_murmur3':
C:\STRAWB~1\perl\lib\CORE/hv_func.h:391: warning: cast from pointer to integer o
f different size
C:\Strawberry\perl\bin\perl.exe -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Tk::X\", 'DLBASE' => 'X', 'DL_FUNCS' => {  }, 'FUN
CLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
dlltool --def X.def --output-exp dll.exp
g++ -o ..\..\blib\arch\auto\Tk\X\X.xs.dll -Wl,--base-file -Wl,dll.base -mdll -s
-L"C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" X.o   C:\STRAWB~1\perl\lib\C
ORE\libperl520.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libimm32.a C:\STRAWB~1\c\x
86_64-w64-mingw32\lib\libcomctl32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libcomd
lg32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libgdi32.a C:\STRAWB~1\c\x86_64-w64-
mingw32\lib\libmoldname.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libkernel32.a C:\
STRAWB~1\c\x86_64-w64-mingw32\lib\libuser32.a C:\STRAWB~1\c\x86_64-w64-mingw32\l
ib\libgdi32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libwinspool.a C:\STRAWB~1\c\x
86_64-w64-mingw32\lib\libcomdlg32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libadva
pi32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libshell32.a C:\STRAWB~1\c\x86_64-w6
4-mingw32\lib\libole32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\liboleaut32.a C:\S
TRAWB~1\c\x86_64-w64-mingw32\lib\libnetapi32.a C:\STRAWB~1\c\x86_64-w64-mingw32\
lib\libuuid.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libws2_32.a C:\STRAWB~1\c\x86
_64-w64-mingw32\lib\libmpr.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libwinmm.a C:\
STRAWB~1\c\x86_64-w64-mingw32\lib\libversion.a C:\STRAWB~1\c\x86_64-w64-mingw32\
lib\libodbc32.a C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libodbccp32.a C:\STRAWB~1\c
\x86_64-w64-mingw32\lib\libcomctl32.a dll.exp
X.o:X.c:(.text+0x56): undefined reference to `_imp__Perl_xs_apiversion_bootcheck
'
X.o:X.c:(.text+0x88): undefined reference to `_imp__Perl_xs_version_bootcheck'
X.o:X.c:(.text+0xb9): undefined reference to `_imp__Perl_newXS_flags'
X.o:X.c:(.text+0xd7): undefined reference to `_imp__Perl_call_list'
X.o:X.c:(.text+0x16b): undefined reference to `_imp__Perl_sv_2pv_flags'
X.o:X.c:(.text+0x19c): undefined reference to `_imp__Perl_sv_2iv_flags'
X.o:X.c:(.text+0x201): undefined reference to `_imp__Perl_sv_setnv'
X.o:X.c:(.text+0x218): undefined reference to `_imp__Perl_mg_set'
X.o:X.c:(.text+0x252): undefined reference to `_imp__Perl_sv_newmortal'
X.o:X.c:(.text+0x26a6): undefined reference to `_imp__Perl_croak_xs_usage'
collect2: ld returned 1 exit status
dmake:  Error code 129, while making '..\..\blib\arch\auto\Tk\X\X.xs.dll'
dmake:  Error code 255, while making 'subdirs'
dmake.exe:  Error code 255, while making 'subdirs'
  SREZIC/Tk-804.032_500.tar.gz
  C:\STRAWB~1\c\bin\dmake.exe -- NOT OK
Stopping: 'install' failed for 'S/SR/SREZIC/Tk-804.032_500.tar.gz'.
Failed during this command:
 SREZIC/Tk-804.032_500.tar.gz                 : make NO

It seems that compiling XS on Windows PERL strawberry is a known difficulty: http://www.perlmonks.org/bare/?node_id=578717

Hope it helps, Michaël

pommedeterresautee commented 9 years ago

Finally I installed it! Not related to Tk but because CPAN was no able to find a compilator. You need Visual Studio (comunity in my case) and add a link to your PATH variable, and it s done, it works :-)

ttay24 commented 2 years ago

If anyone runs across this, my resolution was slightly different than the above comment. With Strawberry perl, I was getting this error. Whenever I ran where g++.exe, I had a previous g++ from MinGW ahead of Strawberry's in my path. Moving the Strawberry directories in front of MinGW in my path resolved the issue