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

I am trying to create the DBD::Sybase binary file but am having trouble with dmake. I am very new to this and I don't understand the errors. The makefile process seemed to work fine. Next I did the dmake and did not get a Sybase.dll as I was expecting. The process executed gcc.exe twice with several parameters. Then the following was displayed:

dbdimp.c: In function 'syb_st_execute': dbdimp.c:3906: warning: passing arg 2 of 'ct_results' from incompatibl +e pointer type dbdimp.c:3930: warning: passing arg 5 of 'ct_bind' from incompatible p +ointer type C:\Perl\bin\perl.exe -MExtUtils::Command -e "rm_rf" -- blib\arch\auto\ +DBD\Sybase\Sybase.a C:\Perl\site\bin\ar.exe -ru blib\arch\auto\DBD\Sybase\Sybase.a Sybase. +o dbdimp.o C:\Perl\site\lib\auto\MinGW\bin\ar.exe: creating blib\arch\auto\DBD\S +ybase\Sybase.a C:\Perl\bin\perl.exe -MExtUtils::Command -e "chmod" -- 755 blib\arch\ +auto\DBD\Sybase\Sybase.a

Can you tell me what happened or didn't happen so I can make adjustments and get the Sybase.dll created? Thanks so much!!

Replies are listed 'Best First'.
Re: Trying to create a DBD::Sybase binary file - Sybase.dll
by roboticus (Chancellor) on Jul 30, 2012 at 20:56 UTC

    freddybill452005:

    I don't see any error messages. What's the problem you're having? From what I can see, it looks like it worked. Please note that on *nix boxes, you don't get ".dll" files, you get ".a" or ".so" or ...

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

Re: Trying to create a DBD::Sybase binary file - Sybase.dll
by bulk88 (Priest) on Jul 31, 2012 at 06:52 UTC
    Sounds like a unix makefile is running on Windows and is making/cross compiling a SO, now the question is, how did that succeed without unix import libs, and does that SO link to kernel32 or does it link to WINE, and does it contain x86 machine code? :-D

    More seriously, from my mingw experience, all dlls are made with calls to dlltool normally. You dont have that call. Sounds like you are running a unix makefile on Windows, or whatever made the makefile (maybe a makefile.pl) thinks you are on unix. Cygwin Perl or Mingw Perl?

    try a "dmake -n all" or "dmake -n install" or whatever target you are using and post that output here.

      dmake -n install produces this output:

      C:\Perl\site\lib\DBD>dmake -n install rem rem rem rem rem rem C:\Perl\bin\perl.exe "-MActivePerl::DocTools" -e "UpdateHTML_blib(inst +alldirs => "site")" rem C:\Perl\bin\perl.exe -MExtUtils::Install -e "install([ from_to => {@AR +GV}, verbo se => '0', uninstall_shadows => '0', dir_mode => '755' ]);" -- \ read C:\Perl\site\lib\auto\DBD\Sybase\.packlist \ write C:\Perl\site\lib\auto\DBD\Sybase\.packlist \ blib\lib C:\Perl\site\lib \ blib\arch C:\Perl\site\lib \ blib\bin C:\Perl\site\bin \ blib\script C:\Perl\site\bin \ blib\man1 C:\Perl\man\man1 \ blib\man3 C:\Perl\man\man3 \ blib\html C:\Perl\html C:\Perl\bin\perl.exe -MExtUtils::Command::MM -e "warn_if_old_packlist" + -- \ C:\Perl\lib\auto\DBD\Sybase rem C:\Perl\bin\perl.exe -l -e "print qq{@ARGV}" -- Appending installation + info to C :\Perl\lib/perllocal.pod C:\Perl\bin\perl.exe -MExtUtils::Command -e "mkpath" -- C:\Perl\lib C:\Perl\bin\perl.exe -MExtUtils::Command::MM -e "perllocal_install" -- + \ "Module" "DBD::Sybase" \ "installed into" "C:\Perl\site\lib" \ LINKTYPE "static" \ VERSION "1.14" \ EXE_FILES "" \ >> C:\Perl\lib\perllocal.pod rem C:\Perl\bin\perl.exe "-MActivePerl::DocTools" -e ActivePerl::DocTools: +:WriteTOC rem C:\Perl\site\lib\DBD>

      Is this what you were looking for? I am running dmake on Windows XP. Should I run nmake or some other 'make'? Thanks very much!!

        I am not sure. You are using dmake with ActivePerl. I dont have experience with that. I believe makemaker needs to be informed whether to create dmake or nmake makefiles. I dont know how to do that. Did you do a dmake clean before the dmake -n install? You are missing a large amount of commands from the -n output.