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. >>