Salman Mohsin <[EMAIL PROTECTED]> writes:
>
>
>all: dispatcher
>
>dispatcher: dispatcher.o mqseries.o log.o
>         cc -o dispatcher dispatcher.o mqseries.o log.o -Llib -lmqm `perl  
>-MExtUtils::Embed -e ldopts`
>
>dispatcher.o: dispatcher.c mqseries.h bool.h log.h
>         cc -c dispatcher.c `perl -MExtUtils::Embed -e ccopts`



Usual order would be 
          cc -c `perl -MExtUtils::Embed -e ldopts` dispatcher.c

And you might need that on all your compiles ...

>
>mqseries.o: mqseries.h mqseries.c bool.h
>         cc -c -Iinclude mqseries.c
>
>log.o: log.h log.c bool.h
>         cc -c log.c
>
>
>Here's the output from "perl -MExtUtils::Embed -e ccopts":
>
>
>  -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias  
>-DUSE_NATIVE_DLOPEN -I/usr/local/include -q32 -D_LARGE_FILES -qlonglong   
>-I/usr/local/lib/perl5/5.8.4/aix/CORE

What does -q32 do?

>
>
>Here's the output from "perl -MExtUtils::Embed -e ldopts":
>
>
>   -bE:/usr/local/lib/perl5/5.8.4/aix/CORE/perl.exp  -brtl -L/usr/local/lib  
>-b32 /usr/local/lib/perl5/5.8.4/aix/auto/DynaLoader/DynaLoader.a  
>-L/usr/local/lib/perl5/5.8.4/aix/CORE -lperl -lbind -lnsl -ldl -lld -lm  
>-lcrypt -lc -lbsd
>
>
>And finally here's the output from perl -V (after re-building it without  
>malloc):
>
>
>Summary of my perl5 (revision 5 version 8 subversion 4) configuration:
>   Platform:
>     osname=aix, osvers=4.3.3.0, archname=aix
>     uname='aix hdndev 3 4 000195334c00 '
>     config_args=''
>     hint=recommended, useposix=true, d_sigaction=define
>     usethreads=undef use5005threads=undef useithreads=undef  
>usemultiplicity=undef
>     useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
>     use64bitint=undef use64bitall=undef uselongdouble=undef
>     usemymalloc=n, bincompat5005=undef
>   Compiler:
>     cc='cc', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE  
>-qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -I/usr/local/include -q32  
>-D_LARGE_FILES -qlonglong',
>     optimize=' ',
>     cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1  
>-qnoansialias -DUSE_NATIVE_DLOPEN -I/usr/local/include'
>     ccversion='3.6.6.0', gccversion='', gccosandvers=''
>     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
>     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',  
>lseeksize=8
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='ld', ldflags =' -brtl -L/usr/local/lib -b32'
>     libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib
>     libs=-lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lc -lbsd
>     perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lc -lbsd
>     libc=/lib/libc.a, so=a, useshrplib=false, libperl=libperl.a
>     gnulibc_version=''
>   Dynamic Linking:
>     dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags='   
>-bE:/usr/local/lib/perl5/5.8.4/aix/CORE/perl.exp'
>     cccdlflags=' ', lddlflags=' -bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp  
>-bE:$(BASEEXT).exp -bnoentry -lc -L/usr/local/lib'
>
>
>Characteristics of this binary (from libperl):
>   Compile-time options: USE_LARGE_FILES
>   Built under aix
>   Compiled at Jun  7 2004 09:59:53
>   @INC:
>     /usr/local/lib/perl5/5.8.4/aix
>     /usr/local/lib/perl5/5.8.4
>     /usr/local/lib/perl5/site_perl/5.8.4/aix
>     /usr/local/lib/perl5/site_perl/5.8.4
>     /usr/local/lib/perl5/site_perl
>     /usr/local/lib/perl5/site_perl/5.005/aix
>     /usr/local/lib/perl5/site_perl/5.005
>     .
>
>
>Thanks,
>Salman
>
>On Fri, 04 Jun 2004 14:17:56 +0100, Nick Ing-Simmons  
><[EMAIL PROTECTED]> wrote:
>
>> Salman Mohsin <[EMAIL PROTECTED]> writes:
>>>
>>> That's where the problem started. When I changed my code,  
>>> compiled/linked
>>> it, and then tried to run it, it core dumped at MQCONN(). Somehow even  
>>> if you don't have any Perl related code embedded in your code but still  
>>> you
>>> linked it with embedded perl, it'd core dump at the 1st MQSeries call.  
>>> I'm compiling & linking by adding (as appropriately suggested by  
>>> "perlembed") `perl -MExtUtils::Embed -e ccopts` and `perl  
>>> -MExtUtils::Embed -e ldopts` to my existing compiler and linker  
>>> commands respectively. This also makes sure that I'm  
>>> incorporating/linking Perl into my code exactly the way
>>> actual Perl executable has been built on our system.
>>>
>>> Has anyone else seen this problem of perl and MQSeries??
>>
>> I don't even know what MQSeries is but here is my â0.02 anyway.
>>
>> 1. It is possible that ccopts has provied some -D flags that change
>>    things. In paticular things like:
>>    -D_LARGEFILE_SOURCE can mean that structs get an "off_t" that is now
>>    64-bit and mis-match with libraries expectation of 32-bit.
>>
>> 2. Most likely though is that ldopts has added something like -lpthreads
>>    or some network library which behaves differently.
>>
>> 3. Even if libaries are okay together the _order_ of libraries
>>    on final LD line can be vital.
>>
>> 4. ldopts often adds -L/usr/local/lib. It is not unknown for  
>> /usr/local/lib
>>    to be full of junk.
>>
>> Given 2..4 it would be helpful to see what your ldopts are, and
>> the before/after adding ldopts.
>>

Reply via email to