Skip Menu |

This queue is for tickets about the MQSeries CPAN distribution.

Report information
The Basics
Id: 94503
Status: resolved
Priority: 0/
Queue: MQSeries

People
Owner: MQSERIES [...] cpan.org
Requestors: Sami.Hanninen [...] tieto.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 1.34
Fixed in: (no value)



Subject: Bug or problem in compiling MQSeries module for Perl
Date: Mon, 7 Apr 2014 13:11:00 +0300
To: <bug-mqseries [...] rt.cpan.org>
From: <Sami.Hanninen [...] tieto.com>
Hi, I am currently trying to compile MQSeries module for Perl. I have managed to overcome the wrong location of MQSeries files and __int64 conversion, but still I cannot complete the compilation. The referenced functions seem to be defined in cmqc.h, but still they are complained about. Environment: MQSeries 1.34 Win 7 x64 MQSeries client + sdk 7.5 Strawberry Perl - perl 5, version 18, subversion 2 (v5.18.2) built for MSWin32-x64-multi-thread The error messages after previous fixes: \MQSeries-1.34>dmake dlltool --def MQSeries.def --output-exp dll.exp g++ -o ..\blib\arch\auto\MQClient\MQSeries\MQSeries.dll -Wl,--base-file -Wl,dll. base -mdll -s -L"C:\DIALOGOS\strawberry\perl\lib\CORE" -L"C:\DIALOGOS\strawberry \c\lib" MQSeries.o constants.o C:\DIALOGOS\strawberry\perl\lib\CORE\libperl518 .a C:\Mqm\Tools\lib\mqic.lib C:\Mqm\Tools\lib\mqic32.lib C:\DIALOGOS\strawberry\ c\x86_64-w64-mingw32\lib\libmoldname.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw 32\lib\libkernel32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libuser32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a C:\DIALOGOS\strawber ry\c\x86_64-w64-mingw32\lib\libwinspool.a C:\DIALOGOS\strawberry\c\x86_64-w64-mi ngw32\lib\libcomdlg32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libadvap i32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a C:\DIALOGOS\s trawberry\c\x86_64-w64-mingw32\lib\libole32.a C:\DIALOGOS\strawberry\c\x86_64-w6 4-mingw32\lib\liboleaut32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libn etapi32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a C:\DIALOGOS\ strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a C:\DIALOGOS\strawberry\c\x86_64- w64-mingw32\lib\libmpr.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libwinm m.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libversion.a C:\DIALOGOS\str awberry\c\x86_64-w64-mingw32\lib\libodbc32.a C:\DIALOGOS\strawberry\c\x86_64-w64 -mingw32\lib\libodbccp32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libco mctl32.a dll.exp MQSeries.o:MQSeries.c:(.text+0x11b): undefined reference to `MQSTAT' MQSeries.o:MQSeries.c:(.text+0x1675): undefined reference to `MQSETMP' MQSeries.o:MQSeries.c:(.text+0x2cc0): undefined reference to `MQINQMP' MQSeries.o:MQSeries.c:(.text+0x3bc6): undefined reference to `MQDLTMP' MQSeries.o:MQSeries.c:(.text+0x40cf): undefined reference to `MQDLTMH' MQSeries.o:MQSeries.c:(.text+0x45e5): undefined reference to `MQCRTMH' MQSeries.o:MQSeries.c:(.text+0x5031): undefined reference to `MQSET' MQSeries.o:MQSeries.c:(.text+0x5591): undefined reference to `MQBEGIN' MQSeries.o:MQSeries.c:(.text+0x58a9): undefined reference to `MQBACK' MQSeries.o:MQSeries.c:(.text+0x5a89): undefined reference to `MQCMIT' MQSeries.o:MQSeries.c:(.text+0x5c6e): undefined reference to `MQDISC' MQSeries.o:MQSeries.c:(.text+0x5ede): undefined reference to `MQCLOSE' MQSeries.o:MQSeries.c:(.text+0x8af2): undefined reference to `MQGET' MQSeries.o:MQSeries.c:(.text+0x103a3): undefined reference to `MQPUT1' MQSeries.o:MQSeries.c:(.text+0x1626d): undefined reference to `MQPUT' MQSeries.o:MQSeries.c:(.text+0x17a2e): undefined reference to `MQINQ' MQSeries.o:MQSeries.c:(.text+0x197bc): undefined reference to `MQOPEN' MQSeries.o:MQSeries.c:(.text+0x1c6c7): undefined reference to `MQCONNX' MQSeries.o:MQSeries.c:(.text+0x1cbcf): undefined reference to `MQCONN' c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.7.3/../../../../x86 _64-w64-mingw32/bin/ld.exe: MQSeries.o: bad reloc address 0x0 in section `.pdata ' c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.7.3/../../../../x86 _64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation collect2.exe: error: ld returned 1 exit status dmake: Error code 129, while making '..\blib\arch\auto\MQClient\MQSeries\MQSeri es.dll' dmake: Error code 255, while making 'subdirs' -- Best regards, Sami
On Mon Apr 07 06:58:48 2014, Sami.Hanninen@tieto.com wrote: Show quoted text
> Hi, I am currently trying to compile MQSeries module for Perl. I have > managed to overcome the wrong location of MQSeries files and __int64 > conversion, but still I cannot complete the compilation. The > referenced functions seem to be defined in cmqc.h, but still they are > complained about. > > Environment: > MQSeries 1.34 > Win 7 x64 > MQSeries client + sdk 7.5 > Strawberry Perl - perl 5, version 18, subversion 2 (v5.18.2) built for > MSWin32-x64-multi-thread
it looks like you are building on a 64 bit windows platform for a 64 bit perl. i've never tried this, so i can't say precisely what the problem is, but i suspect that the libs being referenced are the 32 bit versions. can you try changing the makefile so that it selects mqic.lib only (and not mqic32.lib) from C:\Mqm\Tools\lib64 instead of C:\Mqm\Tools\lib? Show quoted text
> The error messages after previous fixes: > > \MQSeries-1.34>dmake > dlltool --def MQSeries.def --output-exp dll.exp > g++ -o ..\blib\arch\auto\MQClient\MQSeries\MQSeries.dll -Wl,--base- > file -Wl,dll. > base -mdll -s -L"C:\DIALOGOS\strawberry\perl\lib\CORE" > -L"C:\DIALOGOS\strawberry > \c\lib" MQSeries.o constants.o > C:\DIALOGOS\strawberry\perl\lib\CORE\libperl518 > .a C:\Mqm\Tools\lib\mqic.lib C:\Mqm\Tools\lib\mqic32.lib > C:\DIALOGOS\strawberry\ > c\x86_64-w64-mingw32\lib\libmoldname.a > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw > 32\lib\libkernel32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libuser32.a > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a > C:\DIALOGOS\strawber > ry\c\x86_64-w64-mingw32\lib\libwinspool.a > C:\DIALOGOS\strawberry\c\x86_64-w64-mi > ngw32\lib\libcomdlg32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libadvap > i32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a > C:\DIALOGOS\s > trawberry\c\x86_64-w64-mingw32\lib\libole32.a > C:\DIALOGOS\strawberry\c\x86_64-w6 > 4-mingw32\lib\liboleaut32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libn > etapi32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a > C:\DIALOGOS\ > strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a > C:\DIALOGOS\strawberry\c\x86_64- > w64-mingw32\lib\libmpr.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libwinm > m.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libversion.a > C:\DIALOGOS\str > awberry\c\x86_64-w64-mingw32\lib\libodbc32.a > C:\DIALOGOS\strawberry\c\x86_64-w64 > -mingw32\lib\libodbccp32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libco > mctl32.a dll.exp > MQSeries.o:MQSeries.c:(.text+0x11b): undefined reference to `MQSTAT' > MQSeries.o:MQSeries.c:(.text+0x1675): undefined reference to `MQSETMP' > MQSeries.o:MQSeries.c:(.text+0x2cc0): undefined reference to `MQINQMP' > MQSeries.o:MQSeries.c:(.text+0x3bc6): undefined reference to `MQDLTMP' > MQSeries.o:MQSeries.c:(.text+0x40cf): undefined reference to `MQDLTMH' > MQSeries.o:MQSeries.c:(.text+0x45e5): undefined reference to `MQCRTMH' > MQSeries.o:MQSeries.c:(.text+0x5031): undefined reference to `MQSET' > MQSeries.o:MQSeries.c:(.text+0x5591): undefined reference to `MQBEGIN' > MQSeries.o:MQSeries.c:(.text+0x58a9): undefined reference to `MQBACK' > MQSeries.o:MQSeries.c:(.text+0x5a89): undefined reference to `MQCMIT' > MQSeries.o:MQSeries.c:(.text+0x5c6e): undefined reference to `MQDISC' > MQSeries.o:MQSeries.c:(.text+0x5ede): undefined reference to `MQCLOSE' > MQSeries.o:MQSeries.c:(.text+0x8af2): undefined reference to `MQGET' > MQSeries.o:MQSeries.c:(.text+0x103a3): undefined reference to `MQPUT1' > MQSeries.o:MQSeries.c:(.text+0x1626d): undefined reference to `MQPUT' > MQSeries.o:MQSeries.c:(.text+0x17a2e): undefined reference to `MQINQ' > MQSeries.o:MQSeries.c:(.text+0x197bc): undefined reference to `MQOPEN' > MQSeries.o:MQSeries.c:(.text+0x1c6c7): undefined reference to > `MQCONNX' > MQSeries.o:MQSeries.c:(.text+0x1cbcf): undefined reference to `MQCONN' > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > mingw32/4.7.3/../../../../x86 > _64-w64-mingw32/bin/ld.exe: MQSeries.o: bad reloc address 0x0 in > section `.pdata > ' > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > mingw32/4.7.3/../../../../x86 > _64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation > collect2.exe: error: ld returned 1 exit status > dmake: Error code 129, while making > '..\blib\arch\auto\MQClient\MQSeries\MQSeri > es.dll' > dmake: Error code 255, while making 'subdirs' > -- > > Best regards, > Sami
Subject: RE: [rt.cpan.org #94503] Bug or problem in compiling MQSeries module for Perl
Date: Mon, 7 Apr 2014 21:28:51 +0300
To: <bug-MQSeries [...] rt.cpan.org>
From: <Sami.Hanninen [...] tieto.com>
Oh yes, that seemed to work! I changed all references (2 of them) in MQClient\Makefile.PL to lib64 where it tries to identify which one to use. # # XXX -- this hack handles the white space in pathnames prevalent on # Win32. At least on Solaris, quoting the -L path doesn't work. # if ( $mqmtop =~ /\s/ ) { #SHA $libdir = "-L'$mqmtop/lib64'"; } elsif ( $Config{use64bitall} ) { $libdir = "-L$mqmtop/lib64"; } else { #SHA $libdir = "-L$mqmtop/lib64"; } Now it built fine and installed. Unfortunately I don't have a server to test against, so that I have to leave for later. Do you want all the changes I had to do for your future reference? Thank you so much! Sami Show quoted text
-----Original Message----- From: MQ Enginnering Group via RT [mailto:bug-MQSeries@rt.cpan.org] Sent: 7. huhtikuuta 2014 16:19 To: Hanninen Sami Subject: [rt.cpan.org #94503] Bug or problem in compiling MQSeries module for Perl <URL: https://rt.cpan.org/Ticket/Display.html?id=94503 > On Mon Apr 07 06:58:48 2014, Sami.Hanninen@tieto.com wrote:
> Hi, I am currently trying to compile MQSeries module for Perl. I have > managed to overcome the wrong location of MQSeries files and __int64 > conversion, but still I cannot complete the compilation. The > referenced functions seem to be defined in cmqc.h, but still they are > complained about. > > Environment: > MQSeries 1.34 > Win 7 x64 > MQSeries client + sdk 7.5 > Strawberry Perl - perl 5, version 18, subversion 2 (v5.18.2) built for > MSWin32-x64-multi-thread
it looks like you are building on a 64 bit windows platform for a 64 bit perl. i've never tried this, so i can't say precisely what the problem is, but i suspect that the libs being referenced are the 32 bit versions. can you try changing the makefile so that it selects mqic.lib only (and not mqic32.lib) from C:\Mqm\Tools\lib64 instead of C:\Mqm\Tools\lib?
> The error messages after previous fixes: > > \MQSeries-1.34>dmake > dlltool --def MQSeries.def --output-exp dll.exp > g++ -o ..\blib\arch\auto\MQClient\MQSeries\MQSeries.dll -Wl,--base- > file -Wl,dll. > base -mdll -s -L"C:\DIALOGOS\strawberry\perl\lib\CORE" > -L"C:\DIALOGOS\strawberry > \c\lib" MQSeries.o constants.o > C:\DIALOGOS\strawberry\perl\lib\CORE\libperl518 > .a C:\Mqm\Tools\lib\mqic.lib C:\Mqm\Tools\lib\mqic32.lib > C:\DIALOGOS\strawberry\ > c\x86_64-w64-mingw32\lib\libmoldname.a > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw > 32\lib\libkernel32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libuser32.a > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a > C:\DIALOGOS\strawber > ry\c\x86_64-w64-mingw32\lib\libwinspool.a > C:\DIALOGOS\strawberry\c\x86_64-w64-mi > ngw32\lib\libcomdlg32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libadvap > i32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a > C:\DIALOGOS\s > trawberry\c\x86_64-w64-mingw32\lib\libole32.a > C:\DIALOGOS\strawberry\c\x86_64-w6 > 4-mingw32\lib\liboleaut32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libn > etapi32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a > C:\DIALOGOS\ > strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a > C:\DIALOGOS\strawberry\c\x86_64- > w64-mingw32\lib\libmpr.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libwinm > m.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libversion.a > C:\DIALOGOS\str > awberry\c\x86_64-w64-mingw32\lib\libodbc32.a > C:\DIALOGOS\strawberry\c\x86_64-w64 > -mingw32\lib\libodbccp32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > mingw32\lib\libco > mctl32.a dll.exp > MQSeries.o:MQSeries.c:(.text+0x11b): undefined reference to `MQSTAT' > MQSeries.o:MQSeries.c:(.text+0x1675): undefined reference to `MQSETMP' > MQSeries.o:MQSeries.c:(.text+0x2cc0): undefined reference to `MQINQMP' > MQSeries.o:MQSeries.c:(.text+0x3bc6): undefined reference to `MQDLTMP' > MQSeries.o:MQSeries.c:(.text+0x40cf): undefined reference to `MQDLTMH' > MQSeries.o:MQSeries.c:(.text+0x45e5): undefined reference to `MQCRTMH' > MQSeries.o:MQSeries.c:(.text+0x5031): undefined reference to `MQSET' > MQSeries.o:MQSeries.c:(.text+0x5591): undefined reference to `MQBEGIN' > MQSeries.o:MQSeries.c:(.text+0x58a9): undefined reference to `MQBACK' > MQSeries.o:MQSeries.c:(.text+0x5a89): undefined reference to `MQCMIT' > MQSeries.o:MQSeries.c:(.text+0x5c6e): undefined reference to `MQDISC' > MQSeries.o:MQSeries.c:(.text+0x5ede): undefined reference to `MQCLOSE' > MQSeries.o:MQSeries.c:(.text+0x8af2): undefined reference to `MQGET' > MQSeries.o:MQSeries.c:(.text+0x103a3): undefined reference to `MQPUT1' > MQSeries.o:MQSeries.c:(.text+0x1626d): undefined reference to `MQPUT' > MQSeries.o:MQSeries.c:(.text+0x17a2e): undefined reference to `MQINQ' > MQSeries.o:MQSeries.c:(.text+0x197bc): undefined reference to `MQOPEN' > MQSeries.o:MQSeries.c:(.text+0x1c6c7): undefined reference to > `MQCONNX' > MQSeries.o:MQSeries.c:(.text+0x1cbcf): undefined reference to `MQCONN' > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > mingw32/4.7.3/../../../../x86 > _64-w64-mingw32/bin/ld.exe: MQSeries.o: bad reloc address 0x0 in > section `.pdata > ' > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > mingw32/4.7.3/../../../../x86 > _64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation > collect2.exe: error: ld returned 1 exit status > dmake: Error code 129, while making > '..\blib\arch\auto\MQClient\MQSeries\MQSeri > es.dll' > dmake: Error code 255, while making 'subdirs' > -- > > Best regards, > Sami
On Mon Apr 07 14:29:11 2014, Sami.Hanninen@tieto.com wrote: Show quoted text
> Oh yes, that seemed to work! I changed all references (2 of them) in > MQClient\Makefile.PL to lib64 where it tries to identify which one to > use.
great. good to know. Show quoted text
> # > # XXX -- this hack handles the white space in pathnames prevalent on > # Win32. At least on Solaris, quoting the -L path doesn't work. > # > if ( $mqmtop =~ /\s/ ) { > #SHA > $libdir = "-L'$mqmtop/lib64'"; > } elsif ( $Config{use64bitall} ) { > $libdir = "-L$mqmtop/lib64"; > } else { > #SHA > $libdir = "-L$mqmtop/lib64"; > } > > Now it built fine and installed. Unfortunately I don't have a server > to test against, so that I have to leave for later. Do you want all > the changes I had to do for your future reference?
yes, please. we will incorporate them into the next release. Show quoted text
> -----Original Message----- > From: MQ Enginnering Group via RT [mailto:bug-MQSeries@rt.cpan.org] > Sent: 7. huhtikuuta 2014 16:19 > To: Hanninen Sami > Subject: [rt.cpan.org #94503] Bug or problem in compiling MQSeries > module for Perl > > <URL: https://rt.cpan.org/Ticket/Display.html?id=94503 > > > On Mon Apr 07 06:58:48 2014, Sami.Hanninen@tieto.com wrote:
> > Hi, I am currently trying to compile MQSeries module for Perl. I have > > managed to overcome the wrong location of MQSeries files and __int64 > > conversion, but still I cannot complete the compilation. The > > referenced functions seem to be defined in cmqc.h, but still they > > are > > complained about. > > > > Environment: > > MQSeries 1.34 > > Win 7 x64 > > MQSeries client + sdk 7.5 > > Strawberry Perl - perl 5, version 18, subversion 2 (v5.18.2) built > > for > > MSWin32-x64-multi-thread
> > it looks like you are building on a 64 bit windows platform for a 64 > bit perl. > i've never tried this, so i can't say precisely what the problem is, > but i > suspect that the libs being referenced are the 32 bit versions. > > can you try changing the makefile so that it selects mqic.lib only > (and not > mqic32.lib) from C:\Mqm\Tools\lib64 instead of C:\Mqm\Tools\lib? >
> > The error messages after previous fixes: > > > > \MQSeries-1.34>dmake > > dlltool --def MQSeries.def --output-exp dll.exp > > g++ -o ..\blib\arch\auto\MQClient\MQSeries\MQSeries.dll -Wl,--base- > > file -Wl,dll. > > base -mdll -s -L"C:\DIALOGOS\strawberry\perl\lib\CORE" > > -L"C:\DIALOGOS\strawberry > > \c\lib" MQSeries.o constants.o > > C:\DIALOGOS\strawberry\perl\lib\CORE\libperl518 > > .a C:\Mqm\Tools\lib\mqic.lib C:\Mqm\Tools\lib\mqic32.lib > > C:\DIALOGOS\strawberry\ > > c\x86_64-w64-mingw32\lib\libmoldname.a > > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw > > 32\lib\libkernel32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libuser32.a > > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a > > C:\DIALOGOS\strawber > > ry\c\x86_64-w64-mingw32\lib\libwinspool.a > > C:\DIALOGOS\strawberry\c\x86_64-w64-mi > > ngw32\lib\libcomdlg32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libadvap > > i32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a > > C:\DIALOGOS\s > > trawberry\c\x86_64-w64-mingw32\lib\libole32.a > > C:\DIALOGOS\strawberry\c\x86_64-w6 > > 4-mingw32\lib\liboleaut32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libn > > etapi32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a > > C:\DIALOGOS\ > > strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a > > C:\DIALOGOS\strawberry\c\x86_64- > > w64-mingw32\lib\libmpr.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libwinm > > m.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libversion.a > > C:\DIALOGOS\str > > awberry\c\x86_64-w64-mingw32\lib\libodbc32.a > > C:\DIALOGOS\strawberry\c\x86_64-w64 > > -mingw32\lib\libodbccp32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libco > > mctl32.a dll.exp > > MQSeries.o:MQSeries.c:(.text+0x11b): undefined reference to `MQSTAT' > > MQSeries.o:MQSeries.c:(.text+0x1675): undefined reference to > > `MQSETMP' > > MQSeries.o:MQSeries.c:(.text+0x2cc0): undefined reference to > > `MQINQMP' > > MQSeries.o:MQSeries.c:(.text+0x3bc6): undefined reference to > > `MQDLTMP' > > MQSeries.o:MQSeries.c:(.text+0x40cf): undefined reference to > > `MQDLTMH' > > MQSeries.o:MQSeries.c:(.text+0x45e5): undefined reference to > > `MQCRTMH' > > MQSeries.o:MQSeries.c:(.text+0x5031): undefined reference to `MQSET' > > MQSeries.o:MQSeries.c:(.text+0x5591): undefined reference to > > `MQBEGIN' > > MQSeries.o:MQSeries.c:(.text+0x58a9): undefined reference to `MQBACK' > > MQSeries.o:MQSeries.c:(.text+0x5a89): undefined reference to `MQCMIT' > > MQSeries.o:MQSeries.c:(.text+0x5c6e): undefined reference to `MQDISC' > > MQSeries.o:MQSeries.c:(.text+0x5ede): undefined reference to > > `MQCLOSE' > > MQSeries.o:MQSeries.c:(.text+0x8af2): undefined reference to `MQGET' > > MQSeries.o:MQSeries.c:(.text+0x103a3): undefined reference to > > `MQPUT1' > > MQSeries.o:MQSeries.c:(.text+0x1626d): undefined reference to `MQPUT' > > MQSeries.o:MQSeries.c:(.text+0x17a2e): undefined reference to `MQINQ' > > MQSeries.o:MQSeries.c:(.text+0x197bc): undefined reference to > > `MQOPEN' > > MQSeries.o:MQSeries.c:(.text+0x1c6c7): undefined reference to > > `MQCONNX' > > MQSeries.o:MQSeries.c:(.text+0x1cbcf): undefined reference to > > `MQCONN' > > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > > mingw32/4.7.3/../../../../x86 > > _64-w64-mingw32/bin/ld.exe: MQSeries.o: bad reloc address 0x0 in > > section `.pdata > > ' > > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > > mingw32/4.7.3/../../../../x86 > > _64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation > > collect2.exe: error: ld returned 1 exit status > > dmake: Error code 129, while making > > '..\blib\arch\auto\MQClient\MQSeries\MQSeri > > es.dll' > > dmake: Error code 255, while making 'subdirs' > > -- > > > > Best regards, > > Sami
> > >
Subject: RE: [rt.cpan.org #94503] Bug or problem in compiling MQSeries module for Perl
Date: Tue, 8 Apr 2014 11:48:52 +0300
To: <bug-MQSeries [...] rt.cpan.org>
From: <Sami.Hanninen [...] tieto.com>
Okay, here are all the changes, which in fact have been mentioned on earlier bug reports. -- The compilation warns about unknown type _int64. This can be fixed by editing MQ Client/Server include file cmqc.h in C:\mqdir\tools\c\include\ as follows: This part: typedef _int64 MQINT64; typedef unsigned _int64 MQUINT64; Should be like this: typedef long long _int64; typedef unsigned long long _uint64; typedef _int64 MQINT64; typedef _uint64 MQUINT64; -- In file MQSeries-1.34/util/parse_config, the registry key location code is: my $CurrentVersion = "LMachine/SOFTWARE/IBM/MQSeries/CurrentVersion/"; my ($mqmdir) = ( $Registry->{"$CurrentVersion/FilePath"} || $Registry->{"$CurrentVersion/WorkPath"} || "C:/Mqm" ); $mqmtop = "$mqmdir/Tools"; The MQSeries module build fails when it cannot find the C:/Mqm/Tools directory. On my machine, the registry keys in question are installed elsewhere. I belive this is by design; search the net for Wow6432Node. This code fixes the issue: my $CurrentVersion64 = "LMachine/SOFTWARE/Wow6432Node/IBM/MQSeries/CurrentVersion/"; my $CurrentVersion = "LMachine/SOFTWARE/IBM/MQSeries/CurrentVersion/"; my ($mqmdir) = ( $Registry->{"$CurrentVersion64/FilePath"} || $Registry->{"$CurrentVersion64/WorkPath"} || $Registry->{"$CurrentVersion/FilePath"} || $Registry->{"$CurrentVersion/WorkPath"} || "C:/Mqm" ); $mqmtop = "$mqmdir/Tools"; -- And finally, as already written: lib64 to Makefile.PL in MQSeries-1.34\MQClient directory. My brutal hack is wrong and the problem probably is that my Windows doesn't set the environment variable use64bitall, as specified in utils\parse_headers: So it would be better to just set the variable or the script to recognize the need for it by some more reliable means. # # Handle 64-bit support. If your platform is 64 bit but doesn't set # "use64bitall", please get us the details. # my $use_64_bit = 0; if( $Config{use64bitall} ) { $use_64_bit = 1; } With that set, the following code would probably have worked just fine. if ( $mqmtop =~ /\s/ ) { $libdir = "-L'$mqmtop/lib'"; } elsif ( $Config{use64bitall} ) { $libdir = "-L$mqmtop/lib64"; } else { $libdir = "-L$mqmtop/lib"; } -- Br, Sami Show quoted text
-----Original Message----- From: MQ Enginnering Group via RT [mailto:bug-MQSeries@rt.cpan.org] Sent: 7. huhtikuuta 2014 21:38 To: Hanninen Sami Subject: [rt.cpan.org #94503] Bug or problem in compiling MQSeries module for Perl <URL: https://rt.cpan.org/Ticket/Display.html?id=94503 > On Mon Apr 07 14:29:11 2014, Sami.Hanninen@tieto.com wrote:
> Oh yes, that seemed to work! I changed all references (2 of them) in > MQClient\Makefile.PL to lib64 where it tries to identify which one to > use.
great. good to know.
> # > # XXX -- this hack handles the white space in pathnames prevalent on > # Win32. At least on Solaris, quoting the -L path doesn't work. > # > if ( $mqmtop =~ /\s/ ) { > #SHA > $libdir = "-L'$mqmtop/lib64'"; > } elsif ( $Config{use64bitall} ) { > $libdir = "-L$mqmtop/lib64"; > } else { > #SHA > $libdir = "-L$mqmtop/lib64"; > } > > Now it built fine and installed. Unfortunately I don't have a server > to test against, so that I have to leave for later. Do you want all > the changes I had to do for your future reference?
yes, please. we will incorporate them into the next release.
> -----Original Message----- > From: MQ Enginnering Group via RT [mailto:bug-MQSeries@rt.cpan.org] > Sent: 7. huhtikuuta 2014 16:19 > To: Hanninen Sami > Subject: [rt.cpan.org #94503] Bug or problem in compiling MQSeries > module for Perl > > <URL: https://rt.cpan.org/Ticket/Display.html?id=94503 > > > On Mon Apr 07 06:58:48 2014, Sami.Hanninen@tieto.com wrote:
> > Hi, I am currently trying to compile MQSeries module for Perl. I have > > managed to overcome the wrong location of MQSeries files and __int64 > > conversion, but still I cannot complete the compilation. The > > referenced functions seem to be defined in cmqc.h, but still they > > are > > complained about. > > > > Environment: > > MQSeries 1.34 > > Win 7 x64 > > MQSeries client + sdk 7.5 > > Strawberry Perl - perl 5, version 18, subversion 2 (v5.18.2) built > > for > > MSWin32-x64-multi-thread
> > it looks like you are building on a 64 bit windows platform for a 64 > bit perl. > i've never tried this, so i can't say precisely what the problem is, > but i > suspect that the libs being referenced are the 32 bit versions. > > can you try changing the makefile so that it selects mqic.lib only > (and not > mqic32.lib) from C:\Mqm\Tools\lib64 instead of C:\Mqm\Tools\lib? >
> > The error messages after previous fixes: > > > > \MQSeries-1.34>dmake > > dlltool --def MQSeries.def --output-exp dll.exp > > g++ -o ..\blib\arch\auto\MQClient\MQSeries\MQSeries.dll -Wl,--base- > > file -Wl,dll. > > base -mdll -s -L"C:\DIALOGOS\strawberry\perl\lib\CORE" > > -L"C:\DIALOGOS\strawberry > > \c\lib" MQSeries.o constants.o > > C:\DIALOGOS\strawberry\perl\lib\CORE\libperl518 > > .a C:\Mqm\Tools\lib\mqic.lib C:\Mqm\Tools\lib\mqic32.lib > > C:\DIALOGOS\strawberry\ > > c\x86_64-w64-mingw32\lib\libmoldname.a > > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw > > 32\lib\libkernel32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libuser32.a > > C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libgdi32.a > > C:\DIALOGOS\strawber > > ry\c\x86_64-w64-mingw32\lib\libwinspool.a > > C:\DIALOGOS\strawberry\c\x86_64-w64-mi > > ngw32\lib\libcomdlg32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libadvap > > i32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libshell32.a > > C:\DIALOGOS\s > > trawberry\c\x86_64-w64-mingw32\lib\libole32.a > > C:\DIALOGOS\strawberry\c\x86_64-w6 > > 4-mingw32\lib\liboleaut32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libn > > etapi32.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libuuid.a > > C:\DIALOGOS\ > > strawberry\c\x86_64-w64-mingw32\lib\libws2_32.a > > C:\DIALOGOS\strawberry\c\x86_64- > > w64-mingw32\lib\libmpr.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libwinm > > m.a C:\DIALOGOS\strawberry\c\x86_64-w64-mingw32\lib\libversion.a > > C:\DIALOGOS\str > > awberry\c\x86_64-w64-mingw32\lib\libodbc32.a > > C:\DIALOGOS\strawberry\c\x86_64-w64 > > -mingw32\lib\libodbccp32.a C:\DIALOGOS\strawberry\c\x86_64-w64- > > mingw32\lib\libco > > mctl32.a dll.exp > > MQSeries.o:MQSeries.c:(.text+0x11b): undefined reference to `MQSTAT' > > MQSeries.o:MQSeries.c:(.text+0x1675): undefined reference to > > `MQSETMP' > > MQSeries.o:MQSeries.c:(.text+0x2cc0): undefined reference to > > `MQINQMP' > > MQSeries.o:MQSeries.c:(.text+0x3bc6): undefined reference to > > `MQDLTMP' > > MQSeries.o:MQSeries.c:(.text+0x40cf): undefined reference to > > `MQDLTMH' > > MQSeries.o:MQSeries.c:(.text+0x45e5): undefined reference to > > `MQCRTMH' > > MQSeries.o:MQSeries.c:(.text+0x5031): undefined reference to `MQSET' > > MQSeries.o:MQSeries.c:(.text+0x5591): undefined reference to > > `MQBEGIN' > > MQSeries.o:MQSeries.c:(.text+0x58a9): undefined reference to `MQBACK' > > MQSeries.o:MQSeries.c:(.text+0x5a89): undefined reference to `MQCMIT' > > MQSeries.o:MQSeries.c:(.text+0x5c6e): undefined reference to `MQDISC' > > MQSeries.o:MQSeries.c:(.text+0x5ede): undefined reference to > > `MQCLOSE' > > MQSeries.o:MQSeries.c:(.text+0x8af2): undefined reference to `MQGET' > > MQSeries.o:MQSeries.c:(.text+0x103a3): undefined reference to > > `MQPUT1' > > MQSeries.o:MQSeries.c:(.text+0x1626d): undefined reference to `MQPUT' > > MQSeries.o:MQSeries.c:(.text+0x17a2e): undefined reference to `MQINQ' > > MQSeries.o:MQSeries.c:(.text+0x197bc): undefined reference to > > `MQOPEN' > > MQSeries.o:MQSeries.c:(.text+0x1c6c7): undefined reference to > > `MQCONNX' > > MQSeries.o:MQSeries.c:(.text+0x1cbcf): undefined reference to > > `MQCONN' > > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > > mingw32/4.7.3/../../../../x86 > > _64-w64-mingw32/bin/ld.exe: MQSeries.o: bad reloc address 0x0 in > > section `.pdata > > ' > > c:/dialogos/strawberry/c/bin/../lib/gcc/x86_64-w64- > > mingw32/4.7.3/../../../../x86 > > _64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation > > collect2.exe: error: ld returned 1 exit status > > dmake: Error code 129, while making > > '..\blib\arch\auto\MQClient\MQSeries\MQSeri > > es.dll' > > dmake: Error code 255, while making 'subdirs' > > -- > > > > Best regards, > > Sami
> > >