in reply to Re^4: Which Version of Prolog
in thread Which version of Prolog

The ExtUtils::MakeMaker that comes with Strawberry Perl doesn't like libraries ending in .lib instead of in .a and I can not find any way to change this behaviour as it is hard-coded deep inside the ExtUtils::MakeMaker code.

But there is an easy workaround: just go to SWI-Prolog lib directory (C:/Program files/pl/lib by default) and run...

> copy *.lib *.a
Then configure the Perl module again (perl Makefile.PL) and compile it (dmake) and everything should work this time!

Replies are listed 'Best First'.
Re^6: Which Version of Prolog
by Steve_BZ (Chaplain) on Aug 28, 2009 at 12:47 UTC

    OK, thanks for that. It cleared up the warning in the Makefile.pl, but the make (and I'm using NMAKE, do you think DMAKE would make any difference?) still crashed with more lines of output than I could count! Actually, while the dump is fairly daunting, if you just scroll down, it just seems like a whole load of normal compiler commands until you hit:

    C:\msys\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld. +exe: C:\msys\mingw\lib\libmsvcrt.a(dsjhs00137.o): bad reloc address 0 +x154 in section `.tex t'.

    Sadly, I'm not familiar enough with c-compilers to know what this means.

    Here is the Makefile dump

    C:\Perl\Language-Prolog-Yaswi-0.18>perl Makefile.PL Set up gcc environment - 3.4.5 (mingw special) retrieving SWI-Prolog configuration: running 'plcon.exe -dump-runtime-variables' PLBASE: c:/program files/prolog PLARCH: i386-win32 PLLIBS: PLLIB: libpl.lib PLCFLAGS: /MD /GX PLLDFLAGS: PLSOEXT: dll PLVERSION: 50664 PLSHARED: yes PLTHREADS: yes checking thread support in Perl and SWI-Prolog: thread support enabled creating plconfig.c Writing Makefile for Language::Prolog::Yaswi::Low Writing Makefile for Language::Prolog::Yaswi

    Here is the nmake dump.

    C:\Perl\Language-Prolog-Yaswi-0.18>nmake Microsoft (R) Program Maintenance Utility Version 1.50 Copyright (c) Microsoft Corp 1988-94. All rights reserved. nmake -f Makefile all -nologo gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" Low.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" callback.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" callperl.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" hook.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" perl2swi.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" swi2perl.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" plconfig.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" argv.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" query.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" vars.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" context.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" engines.c gcc -c -I. -I"c:/program files/prolog/include" -DNDEBUG -DWI +N32 -D_CON SOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE +-DPRIVLIB_ LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO - +DPERL_MSVC RT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -O2 -DVERSION=\"0.18 +\" -DXS_V ERSION=\"0.18\" "-IC:\Perl\lib\CORE" opaque.c Running Mkbootstrap for Language::Prolog::Yaswi::Low () C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Low.bs dlltool --def Low.def --output-exp dll.exp g++ -o ..\blib\arch\auto\Language\Prolog\Yaswi\Low\Low.dll -Wl +,--base-fi le -Wl,dll.base -mdll -L"C:\Perl\lib\CORE" Low.o callback.o callperl.o + hook.o pe rl2swi.o swi2perl.o plconfig.o argv.o query.o vars.o context.o engines +.o opaque. o -Wl,--image-base,0x28030000 C:\Perl\lib\CORE\perl58.lib "c:\program + files\pro log\lib\libpl.a" C:\msys\mingw\lib\libkernel32.a C:\msys\mingw\lib\lib +user32.a C :\msys\mingw\lib\libgdi32.a C:\msys\mingw\lib\libwinspool.a C:\msys\mi +ngw\lib\li bcomdlg32.a C:\msys\mingw\lib\libadvapi32.a C:\msys\mingw\lib\libshell +32.a C:\ms ys\mingw\lib\libole32.a C:\msys\mingw\lib\liboleaut32.a C:\msys\mingw\ +lib\libnet api32.a C:\msys\mingw\lib\libuuid.a C:\msys\mingw\lib\libws2_32.a C:\m +sys\mingw\ lib\libmpr.a C:\msys\mingw\lib\libwinmm.a C:\msys\mingw\lib\libversion +.a C:\msys \mingw\lib\libodbc32.a C:\msys\mingw\lib\libodbccp32.a C:\msys\mingw\l +ib\libmsvc rt.a dll.exp C:\msys\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld. +exe: C:\ms ys\mingw\lib\libmsvcrt.a(dsjhs00137.o): bad reloc address 0x154 in sec +tion `.tex t' collect2: ld returned 1 exit status NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code + '0x1' Stop. NMAKE : fatal error U1077: 'C:\WINDOWS\system32\cmd.exe' : return code + '0x2' Stop.