DaveARoberts has asked for the wisdom of the Perl Monks concerning the following question:

I have Win 7 Professinal 64bit with Strawberry Perl ver 22 64 bit installed. easy so far.

Where I need help is identifying a binary Tcl install and any instructions for succesfully building the Tcl Perl module.

Has anyone been able to do that? If so can you provide any guidance - what binary build worked for you - and do you have any perl Tcl build guidance ?

  • Comment on Tcl for Strawberry Perl on Windows 64bit

Replies are listed 'Best First'.
Re: Tcl for Strawberry Perl on Windows 64bit
by Anonymous Monk on Jul 21, 2015 at 00:08 UTC
      not quite so simple. This is the result from attempting to build Tcl using lateset Strawberry Perl (perl 5, version 22, subversion 0 (v5.22.0) built for MSWin32-x64-multi-thread) and AS TCl (ActiveState ActiveTcl 8.6.4.1.299124 distribution for Win32/x64)

      result from perl Makefile.PL

      tclsh=C:/Tcl/bin/tclsh.exe tclConfig.sh=C:/Tcl/lib/tclConfig.sh tcl_library=C:/Tcl/lib/tcl8.6 tcl_version=8.6 LIBS = -LC:/Tcl/lib -ltcl86 INC = -IC:/Tcl/include DEFINE = Checking if your kit is complete... Looks good Generating a dmake-style Makefile Writing Makefile for Tcl Writing MYMETA.yml and MYMETA.json
      which looks right. It found the lib, inc, version, tclsh etc. So when I attempt to make (or rather dmake)

      cp Tcl.pm blib\lib\Tcl.pm Running Mkbootstrap for Tcl () "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 +"Tcl.bs" "C:\Strawberry\perl\bin\perl.exe" "C:\Strawberry\perl\lib\ExtUtils\xsu +bpp" -typemap "C:\STRAWB~1\perl\lib\ExtUtils\typemap" -typemap "type +map" Tcl.xs > Tcl.xsc && "C:\Strawberry\perl\bin\perl.exe" -MExtUtil +s::Command -e mv -- Tcl.xsc Tcl.c Please specify prototyping behavior for Tcl.xs (see perlxs manual) gcc -c -IC:/Tcl/include -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE +-DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS - +fwrapv -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"1. +02\" -DXS_VERSION=\"1.02\" "-IC:\STRAWB~1\perl\lib\CORE" Tcl.c "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Tcl\", 'DLBASE' => 'Tcl', 'DL_FUNCS' => +{ }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def Tcl.def --output-exp dll.exp g++ -o blib\arch\auto\Tcl\Tcl.xs.dll -Wl,--base-file -Wl,dll.base -mdl +l -s -L"C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" Tcl.o "C:\ +STRAWB~1\perl\lib\CORE\libperl522.a" "C:\Tcl\lib\tcl86.lib" "C:\STRAW +B~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\lib +user32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libgdi32.a" "C:\STRAW +B~1\c\x86_64-w64-mingw32\lib\libwinspool.a" "C:\STRAWB~1\c\x86_64-w64 +-mingw32\lib\libcomdlg32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\lib +advapi32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libshell32.a" "C:\S +TRAWB~1\c\x86_64-w 64-mingw32\lib\libole32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libol +eaut32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libnetapi32.a" "C:\ST +RAWB~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-mingw3 +2\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 C:\Tcl\lib\tcl86.lib: error adding symbols: File format not recognized collect2.exe: error: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Tcl\Tcl.xs.dll'

      Any ideas? Its clearly struggling with the tcl86.lib format...

        Any ideas? Its clearly struggling with the tcl86.lib format

        Is tcl86.lib an import lib (stub lib) for a dll ? ... or is it a static library ?
        If it's an import lib, then you can use Strawberry to build a mingw import lib for that dll.
        (Also, just check that it's an x64 library that you've got.)

        Cheers,
        Rob

        not quite so simple.

        It still looks very very simple :)

        Ok, this is simpler, portable activeperl, it comes with Tcl/Tkx http://downloads.activestate.com/ActivePerl/releases/5.20.2.2001/ActivePerl-5.20.2.2001-MSWin32-x64-298913.zip

        This is the result from attempting to build Tcl using lateset Strawberry Perl (perl 5, version 22, subversion 0 (v5.22.0) built for MSWin32-x64-multi-thread) and AS TCl (ActiveState ActiveTcl 8.6.4.1.299124 distribution for Win32/x64)

        result from perl Makefile.PL C:\Tcl\lib\tcl86.lib: error adding symbols: File format not recognized

        Any ideas? Its clearly struggling with the tcl86.lib format...

        That is simple, examine the file

        Step one, get diagnostics

        file "C:\Tcl\lib\tcl86.lib" sha1sum "C:\Tcl\lib\tcl86.lib" objdump -p "C:\Tcl\lib\tcl86.lib" |head
Re: Tcl for Strawberry Perl on Windows 64bit
by KeighleHawk (Scribe) on Jul 20, 2015 at 23:37 UTC
    You didn't mention if there was a reason you went with Strawberry Perl in particular. It's been awhile since I've used it, but ActiveState ActiveState has both Perl and TCL, so may get you what you wanted faster. Robert Kuropkat
      Hi

      I've used Strawberry perl for a number of years now - and frankly I can't remember why I drifted away from AS.

      I'm just changing PC's and building what I had on my last PC (which also used AS Tcl and Strawberry perl all on Win32).. I guess this should be simple and straight forward, and I'm reluctant to either reverse and install 32 bit versions and change my perl platform (from that you can infer I'm being stubborn). I'll try the perl AS route as a next step, or maybe re-writing my Tkx apps in Tk (which I'd really rather not do).

        I'll try the perl AS route as a next step, or maybe re-writing my Tkx apps in Tk (which I'd really rather not do).

        :) For some reason lots of people thought they needed Tkx when they really didn't :) Tk is available via ppm There is no reason to switch to Tkx voluntarily.

        Also :)Tkx is the worst possible option )