http://www.perlmonks.org?node_id=987627


in reply to Re^3: Trouble Installing Win32::GuiTest
in thread Trouble Installing Win32::GuiTest

Rob, Here is the full output

C:\strawberry\Win32-GuiTest-1.60>dmake cp lib/Win32/GuiTest/GuiTest.pc blib\lib\Win32\GuiTest\GuiTest.pc cp lib/Win32/GuiTest/Examples.pm blib\lib\Win32\GuiTest\Examples.pm cp lib/Win32/GuiTest.pm blib\lib\Win32\GuiTest.pm cp lib/Win32/GuiTest/Cmd.pm blib\lib\Win32\GuiTest\Cmd.pm C:\Perl64\bin\perl.exe -IC:\Perl64\lib -IC:\Perl64\lib C:\Perl64\lib\E +xtUtils\xsubpp -typemap C:\Perl64\lib\ExtUtils\typemap -typemap perl +object.map -typemap typemap GuiTest.xs >xstmp.c && C:\Perl64\bin\perl.exe -MExtUt +ils::Command -e mv -- xstmp.c GuiTest.cpp C:/STRAWB~1/c/bin/gcc.exe -c -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRIC +T -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE +-DPERL_IMPL ICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DHASATTRIBUTE -fno-stri +ct-aliasing -mms-bitfields -O2 -DVERSION=\"1.60\" -DXS_VERSIO +N=\"1.60\" "-IC:\Perl64\lib\CORE" GuiTest.cpp C:/STRAWB~1/c/bin/gcc.exe -c -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRIC +T -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE +-DPERL_IMPL ICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DHASATTRIBUTE -fno-stri +ct-aliasing -mms-bitfields -O2 -DVERSION=\"1.60\" -DXS_VERSIO +N=\"1.60\" "-IC:\Perl64\lib\CORE" DibSect.cpp Running Mkbootstrap for Win32::GuiTest () C:\Perl64\bin\perl.exe -MExtUtils::Command -e chmod -- 644 GuiTest.bs C:\Perl64\bin\perl.exe -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"Win32::GuiTest\", 'DLBASE' => 'GuiTest', + 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' = +> []);" Set up gcc environment - 4.4.7 20111023 (prerelease) [svn/rev.180339 - + mingw-w64/oz] dlltool --def GuiTest.def --output-exp dll.exp C:\STRAWB~1\c\bin\g++.exe -o blib\arch\auto\Win32\GuiTest\GuiTest.dll +-Wl,--base-file -Wl,dll.base -mdll -L"C:\Perl64\lib\CORE" GuiTest.o D +ibSect.o C:\Perl64\lib\CORE\perl514.lib -lkernel32 -luser32 -lgdi32 -lwinspool +-lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid +-lws2_32 -l mpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lbufferoverflowU + -lmsvcrt dll.exp c:/strawb~1/c/bin/../lib/gcc/x86_64-w64-mingw32/4.4.7/../../../../x86_ +64-w64-mingw32/bin/ld.exe: cannot find -lbufferoverflowU collect2: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Win32\GuiTest\Gui +Test.dll' C:\strawberry\Win32-GuiTest-1.60>dmake install dlltool --def GuiTest.def --output-exp dll.exp C:\STRAWB~1\c\bin\g++.exe -o blib\arch\auto\Win32\GuiTest\GuiTest.dll +-Wl,--base-file -Wl,dll.base -mdll -L"C:\Perl64\lib\CORE" GuiTest.o D +ibSect.o C:\Perl64\lib\CORE\perl514.lib -lkernel32 -luser32 -lgdi32 -lwinspool +-lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid +-lws2_32 -l mpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lbufferoverflowU + -lmsvcrt dll.exp c:/strawb~1/c/bin/../lib/gcc/x86_64-w64-mingw32/4.4.7/../../../../x86_ +64-w64-mingw32/bin/ld.exe: cannot find -lbufferoverflowU collect2: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Win32\GuiTest\Gui +Test.dll' C:\strawberry\Win32-GuiTest-1.60>dmake test dlltool --def GuiTest.def --output-exp dll.exp C:\STRAWB~1\c\bin\g++.exe -o blib\arch\auto\Win32\GuiTest\GuiTest.dll +-Wl,--base-file -Wl,dll.base -mdll -L"C:\Perl64\lib\CORE" GuiTest.o D +ibSect.o C:\Perl64\lib\CORE\perl514.lib -lkernel32 -luser32 -lgdi32 -lwinspool +-lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid +-lws2_32 -l mpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lbufferoverflowU + -lmsvcrt dll.exp c:/strawb~1/c/bin/../lib/gcc/x86_64-w64-mingw32/4.4.7/../../../../x86_ +64-w64-mingw32/bin/ld.exe: cannot find -lbufferoverflowU collect2: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Win32\GuiTest\Gui +Test.dll' C:\strawberry\Win32-GuiTest-1.60>dmake install dlltool --def GuiTest.def --output-exp dll.exp C:\STRAWB~1\c\bin\g++.exe -o blib\arch\auto\Win32\GuiTest\GuiTest.dll +-Wl,--base-file -Wl,dll.base -mdll -L"C:\Perl64\lib\CORE" GuiTest.o D +ibSect.o C:\Perl64\lib\CORE\perl514.lib -lkernel32 -luser32 -lgdi32 -lwinspool +-lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid +-lws2_32 -l mpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32 -lbufferoverflowU + -lmsvcrt dll.exp c:/strawb~1/c/bin/../lib/gcc/x86_64-w64-mingw32/4.4.7/../../../../x86_ +64-w64-mingw32/bin/ld.exe: cannot find -lbufferoverflowU collect2: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Win32\GuiTest\Gui +Test.dll' C:\strawberry\Win32-GuiTest-1.60>dir Volume in drive C is OSPART Volume Serial Number is B87B-3490

Replies are listed 'Best First'.
Re^5: Trouble Installing Win32::GuiTest
by syphilis (Archbishop) on Aug 15, 2012 at 23:08 UTC
    Yes, it looks like you're using 64-bit ActivePerl (as that's the only perl that wants to link to -lbufferoverflowU) with a 64-bit gcc compiler.
    Using a 32-bit gcc compiler with 32-bit ActivePerl is fine, but using a 64-bit gcc compiler with 64-bit ActivePerl simply will *not* work in the same way.

    The thing that's killing you is the fact that gcc doesn't have a bufferoverflowU library. You could work around that problem by copying one of the libraries in c:/strawberry/c/lib to c:/strawberry/c/lib/bufferoverflowU.a.
    That would satisfy that dependency but I think you'll then striike other problems.

    Options include:
    1) Using Strawberry Perl instead of ActivePerl;
    2) Using ActivePerl with one of the freely available MS compilers;
    3) Installing ExtUtils::FakeConfig into ActivePerl - which *will* enable you to use 64-bit gcc with 64-bit ActivePerl.

    I've done 3) with ActivePerl 5.10.0 (build 1005) and it works fairly well. Sometimes I can't build distros that use Module::Build ('perl build.pl') instead of dmake ('perl Makefile.PL') - for reasons that I've yet to uncover.
    And I had to additionally create a libperl510.a - which, in your case, would be libperl514.a .

    Cheers,
    Rob