Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Installation of DBD::Sybase with Strawberry Perl

by syphilis (Archbishop)
on Mar 08, 2021 at 13:48 UTC ( [id://11129330]=note: print w/replies, xml ) Need Help??


in reply to Installation of DBD::Sybase with Strawberry Perl

Are you saying that line 992 of the generated Makefile contains the string "Makefile.PL" ?
That would seem very strange to me.
Did it contain the same string before you altered getLibVersion ?

Could you provide (placed inside <code> and </code> tags) a copy'n'paste of lines 988 to 996 (or thereabouts) ?

Cheers,
Rob

Replies are listed 'Best First'.
Re^2: Installation of DBD::Sybase with Strawberry Perl
by Anonymous Monk on Mar 08, 2021 at 16:26 UTC
    I'm sorry. I got the problems described above in 01/2021, asked the same question at Stackoverflow but got no useful response. So I decided to ask here at perlmonks - without reproducing the problems again bevor posting. There is a new DBD::Sybase version available at CPAN which seems to address a few of the problems. The Sybase version is now detected correctly and there are no longer errors in the generated makefile. It still won't work anyway. I get
    Warning (mostly harmless): No library found for -llibsybct.lib Warning (mostly harmless): No library found for -llibsybcs.lib Warning (mostly harmless): No library found for -llibsybtcl.lib Warning (mostly harmless): No library found for -llibsybcomn.lib Warning (mostly harmless): No library found for -llibsybintl.lib Warning (mostly harmless): No library found for -llibsybblk.lib
    from Makefile.PL. After running cmake I get these errors:
    "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"DBD::Sybase\", 'DLBASE' => 'Sybase', 'DL +_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => [] +);" g++ Sybase.def -o blib\arch\auto\DBD\Sybase\Sybase.xs.dll -mdll -s -L" +C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" Sybase.o dbdimp.o +"C:\STRAWB~1\perl\lib\CORE\libperl532.a" "C:\STRAWB~1\c\x86_64-w64-mi +ngw32\lib\libm.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-mingw3 +2\lib\libgdi32.a" "C:\STRAWB~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\libadvapi32.a" "C:\STRAWB~1\c\x86_64-w64-ming +w32\lib\libshell32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libole32. +a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\liboleaut32.a" "C:\STRAWB~1\ +c\x86_64-w64-mingw32\lib\libnetapi32.a" "C:\STRAWB~1\c\x86_64-w64-min +gw32\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_6 +4-w64-mingw32\lib\libcomctl32.a" -Wl,--enable-auto-image-base C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xd51): undefin +ed reference to `ct_options' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xe15): undefin +ed reference to `ct_cmd_alloc' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xef4): undefin +ed reference to `ct_config' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xf34): undefin +ed reference to `ct_config' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xfae): undefin +ed reference to `ct_con_alloc' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xff1): undefin +ed reference to `ct_con_props' ... (many more) ...
    The linking process seems to ignore the library directory of the Sybase installation. The library paths are set in Makefile.PL with my $lddlflags = $Config{lddlflags};. I don't know where to configure this and added the Sybase library directory manually to $lddlflags.
    $lddlflags .= '-L"c:\SAP\OCS-16_0\dll\"';
    Now I get
    "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"DBD::Sybase\", 'DLBASE' => 'Sybase', 'DL +_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => [] +);" g++ Sybase.def -o blib\arch\auto\DBD\Sybase\Sybase.xs.dll -mdll -s -L" +C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib"-L"c:\SAP\OCS-16_0\dl +l\" Sybase.o dbdimp.o "C:\STRAWB~1\perl\lib\CORE\libperl532.a" "C:\ +STRAWB~1\c\x86_64-w64-mingw32\lib\libm.a" "C:\STRAWB~1\c\x86_64-w64-m +ingw32\lib\libmoldname.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libke +rnel32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libuser32.a" "C:\STRA +WB~1\c\x86_64-w64-mingw32\lib\libgdi32.a" "C:\STRAWB~1\c\x86_64-w64-m +ingw32\lib\libwinspool.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libco +mdlg32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libadvapi32.a" "C:\ST +RAWB~1\c\x86_64-w64-mingw32\lib\libshell32.a" "C:\STRAWB~1\c\x86_64-w +64-mingw32\lib\libole32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libo +leaut32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libnetapi32.a" "C:\S +TRAWB~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\libmp +r.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-mingw +32\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" -Wl,--enable +-auto-image-base C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: cannot export boot_DBD__Sybase: symbol n +ot defined collect2.exe: error: ld returned 1 exit status gmake: *** [Makefile:490: blib\arch\auto\DBD\Sybase\Sybase.xs.dll] Err +or 1

      Whatever you did, it messed up the command line that g++ is invoked with:

      g++ Sybase.def -o blib\arch\auto\DBD\Sybase\Sybase.xs.dll -mdll -s -L" +C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib"-L"c:\SAP\OCS-16_0\dl +l\" Sybase.o ...

      Note how these escaped bckslashes and missing spaces in your addition are unlike the other -L stanzas.

      A first step would be to make these identical to the other -L stanzas and add proper whitespace:

      g++ Sybase.def -o blib\arch\auto\DBD\Sybase\Sybase.xs.dll -mdll -s -L" +C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" -L "c:\SAP\OCS-16_0\ +dll" Sybase.o

      Also, there should be a way to pass the proper parameters to Makefile.PL from the command line instead of patching Makefile.PL.

        Thanks. I fixed this. It still doesn't solve the problem (please see below).
      Warning (mostly harmless): No library found for -llibsybct.lib Warning (mostly harmless): No library found for -llibsybcs.lib Warning (mostly harmless): No library found for -llibsybtcl.lib Warning (mostly harmless): No library found for -llibsybcomn.lib Warning (mostly harmless): No library found for -llibsybintl.lib Warning (mostly harmless): No library found for -llibsybblk.lib
      I think you'll need to get rid of those warnings - though it's hard to be sure as I'm missing a lot of information.
      Do those library files (libsybct.lib, etc.) actually exist ?
      If they do, then inside the Makefile.PL remove the 'lib' and '.lib' from the names, so that -llibsybct.lib becomes -lsybct
      Do the same thing for the other 5 libs, then start again and see if that works.

      If files of those names do not exist, then what names do they actually have ?

      Another reason that the libraries are not being found could simply be that the system doesn't know where they are.
      This can be fixed by running set LIBRARY_PATH=%LIBRARY_PATH%;C:\location\of\libs where "C:\location\of\libs" is replaced with the actual path to the location of those libs.

      Whenever you make any changes, you should then start the build process all over again from the beginning

      Cheers,
      Rob
        Most of these libraries exist (and the few others are most likely not important indeed). I changed Makefile.PL to -lsybct (..), but got the same result. I set the LIBRARY_PATH then, which reduced the warnings I got from Makefile.PL to
        Warning (mostly harmless): No library found for -lsybtcl Warning (mostly harmless): No library found for -lsybcomn Warning (mostly harmless): No library found for -lsybintl
        This is much better, because these libraries are not installed by the Sybase driver, but gmake still results in
        c:\Strawberry\cpan\build\DBD-Sybase-1.17-0>gmake Skip blib\lib\DBD\dbd-sybase.pod (unchanged) Skip blib\lib\DBD\Sybase.pm (unchanged) Running Mkbootstrap for Sybase () "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 +"Sybase.bs" "C:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonemp +ty -- Sybase.bs blib\arch\auto\DBD\Sybase\Sybase.bs 644 gcc -c -IC:\SAP/OCS-16_0/include -DNO_BLK=1 -IC:/Strawberry/perl/vend +or/lib/auto/DBI -DWIN32 -DWIN64 -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTM +ODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO +-fwrapv -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"1.17 +\" -DXS_VERSION=\"1.17\" "-IC:\STRAWB~1\perl\lib\CORE" Sybase.c In file included from C:\STRAWB~1\perl\lib\CORE/perl.h:5603, from C:/Strawberry/perl/vendor/lib/auto/DBI/DBIXS.h:2 +3, from Sybase.h:16, from Sybase.xs:14: Sybase.xs: In function 'XS_DBD__Sybase__db_ping': Sybase.xs:84:32: warning: implicit declaration of function 'syb_ping'; + did you mean 'syb_init'? [-Wimplicit-function-declaration] ST(0) = sv_2mortal(newSViv(syb_ping(dbh, imp_dbh))); ^~~~~~~~ C:\STRAWB~1\perl\lib\CORE/embed.h:557:46: note: in definition of macro + 'sv_2mortal' #define sv_2mortal(a) Perl_sv_2mortal(aTHX_ a) ^ Sybase.xs:84:24: note: in expansion of macro 'newSViv' ST(0) = sv_2mortal(newSViv(syb_ping(dbh, imp_dbh))); ^~~~~~~ Sybase.xs: In function 'XS_DBD__Sybase__st_cancel': Sybase.xs:96:13: warning: implicit declaration of function 'syb_st_can +cel'; did you mean 'syb_st_finish'? [-Wimplicit-function-declaration] ST(0) = syb_st_cancel(sth, imp_sth) ? &PL_sv_yes : &PL_sv_no; ^~~~~~~~~~~~~ syb_st_finish gcc -c -IC:\SAP/OCS-16_0/include -DNO_BLK=1 -IC:/Strawberry/perl/vend +or/lib/auto/DBI -DWIN32 -DWIN64 -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTM +ODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO +-fwrapv -fno-strict-aliasing -mms-bitfields -s -O2 -DVERSION=\"1.17 +\" -DXS_VERSION=\"1.17\" "-IC:\STRAWB~1\perl\lib\CORE" dbdimp.c dbdimp.c: In function 'syb_st_execute': dbdimp.c:4076:39: warning: passing argument 2 of 'ct_results' from inc +ompatible pointer type [-Wincompatible-pointer-types] while (ct_results(imp_sth->cmd, &restype) == CS_SUCCEED && rest +ype != CS_CMD_DONE) { ^~~~~~~~ In file included from Sybase.h:19, from dbdimp.c:10: C:\SAP/OCS-16_0/include/ctpublic.h:381:10: note: expected 'CS_INT *' { +aka 'long int *'} but argument is of type 'int *' CS_INT *result_type ~~~~~~~~^~~~~~~~~~~ dbdimp.c:4101:75: warning: passing argument 5 of 'ct_bind' from incomp +atible pointer type [-Wincompatible-pointer-types] if( ct_bind(imp_sth->cmd, i+1, &phs->datafmt, SvPVX(phs-> +sv), &params[i].len, 0) != CS_SUCCEED ) + ^~~~~~~~~~~~~~ In file included from Sybase.h:19, from dbdimp.c:10: C:\SAP/OCS-16_0/include/ctpublic.h:117:10: note: expected 'CS_INT *' { +aka 'long int *'} but argument is of type 'int *' CS_INT *outputlen, ~~~~~~~~^~~~~~~~~ g++ Sybase.def -o blib\arch\auto\DBD\Sybase\Sybase.xs.dll -mdll -s -L" +C:\STRAWB~1\perl\lib\CORE" -L"C:\STRAWB~1\c\lib" Sybase.o dbdimp.o +"C:\STRAWB~1\perl\lib\CORE\libperl532.a" "c:\SAP\OCS-16_0\lib\libsybc +t.lib" "c:\SAP\OCS-16_0\lib\libsybcs.lib" "c:\SAP\OCS-16_0\lib\libsyb +blk.lib" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libm.a" "C:\STRAWB~1\c +\x86_64-w64-mingw32\lib\libmoldname.a" "C:\STRAWB~1\c\x86_64-w64-ming +w32\lib\libkernel32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libuser3 +2.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libgdi32.a" "C:\STRAWB~1\c +\x86_64-w64-mingw32\lib\libwinspool.a" "C:\STRAWB~1\c\x86_64-w64-ming +w32\lib\libcomdlg32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libadvap +i32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libshell32.a" "C:\STRAWB +~1\c\x86_64-w64-mingw32\lib\libole32.a" "C:\STRAWB~1\c\x86_64-w64-min +gw32\lib\liboleaut32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libneta +pi32.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-ming +w32\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\li +b\libodbccp32.a" "C:\STRAWB~1\c\x86_64-w64-mingw32\lib\libcomctl32.a" + -Wl,--enable-auto-image-base C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xd51): undefin +ed reference to `ct_options' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xe15): undefin +ed reference to `ct_cmd_alloc' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xef4): undefin +ed reference to `ct_config' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xf34): undefin +ed reference to `ct_config' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xfae): undefin +ed reference to `ct_con_alloc' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0xff1): undefin +ed reference to `ct_con_props' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x1028): undefi +ned reference to `ct_con_props' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x10be): undefi +ned reference to `ct_con_props' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x114a): undefi +ned reference to `ct_con_props' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x1188): undefi +ned reference to `ct_con_props' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x11d4): more u +ndefined references to `ct_con_props' follow C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x12c3): undefi +ned reference to `cs_loc_alloc' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x130c): undefi +ned reference to `cs_locale' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x136f): undefi +ned reference to `cs_locale' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x13d2): undefi +ned reference to `cs_locale' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x1427): undefi +ned reference to `cs_dt_info' C:/Strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x8 +6_64-w64-mingw32/bin/ld.exe: dbdimp.o:dbdimp.c:(.text+0x14a9): undefi +ned reference to `ct_config' ... (und many more lines) ...
        All these ct_.. functions are located in libsybct.lib, the cs_.. functions are located in libsybcs.lib.
        libsybct.lib and libsybcs.lib are in the path specified in LIBRARY_PATH and I tried every variation of "-llibsybct.lib", "-llibsybct", "-lsybct.lib", .. None worked :(
      (I wrote "cmake" once, but it's "gmake").

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11129330]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2024-04-24 20:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found