Operating System - HP-UX
1752793 Members
6260 Online
108789 Solutions
New Discussion юеВ

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

 
SOLVED
Go to solution
Philip Reyniers
Advisor

HPUX 64Bit Perl 5.8.3 Compile Problems

To All:

I am attempting to compile a 64 Bit Version of Perl 5.8.3 using Merijn's "gcc 3.4.1 + binutils 2.15 + gdb-6.1.1" 64 bit compiler. Which can be obtained from http://www.hpux.ws/merijn .

System Configuration:

HP-UX server01 B.11.11 U 9000/785 2013403408 unlimited-user license

Latest Patch Set:
HP Bundle: 12/04
cpm_collect.sh Patches applied.

A Little History:

1). I would love to use his pre-compiled versions of perl; however, because of customer requirements, they do not want to have links from Merijn's default install directory to where they want to have perl installed.
2). The 64 bit version of Perl 5.8.3 MUST support the DBD::Oracle module.
3). I have attached the config.sh file that I am using to build this 64 bit version of Perl 5.8.3.
4). Customer requires perl to be build using gcc.


Configure Command Line:

./Configure -f config.sh -A prepend:libswanted='cl pthread ' -Duse64bitint -Duse64bitall -Dcc=gcc64 -Dusedevel -Duselargefiles

The Make Error(s):

Making B (dynamic)
rm -f ../../../lib/auto/B/C/C.sl
LD_RUN_PATH="" /usr/local/pa20_64/bin/ld -b -L/usr/local/pa20_64/lib -L/lib/pa20_64 C.o -o ../../../lib/auto/B/C/C.sl
/usr/local/pa20_64/bin/ld: invalid BFD target `-L/usr/local/pa20_64/lib'
*** Error exit code 1

Stop.
*** Error exit code 1

Action Requested:

How do I get by this error?
What does this error mean?
How do I get Perl to compile as 64 Bit ready for Oracle?

Thanks to all that respond!

Sincerely,

Philip A. Reyniers
8 REPLIES 8
H.Merijn Brand (procura
Honored Contributor
Solution

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

Where *do* they want to have it?

I might be persuaded to build a binary esp for you.

I could also post my config.sh, which you then can modify before calling make

FWIW why 3.4.1? 3.4.3 is the currently newest build for gcc

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Philip Reyniers
Advisor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

Procura could you post or email your config.sh script?

Philip A. Reyniers
philip_reyniers@hotmail.com

H.Merijn Brand (procura
Honored Contributor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

Sent for

HP-UX 11.11/64
perl-5.8.6-dor (almost 5.8.7) => /opt/perl64/...
gcc-3.4.3 => /usr/local/pa20_64/...

Enjoy, Have FUN! (and good luck) H.Merijn
Enjoy, Have FUN! H.Merijn
Philip Reyniers
Advisor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

Procura,

Where there any special environment settings that you have used, such as, LD_LIBRARY_PATH, SHLIB_PATH, etc.

Is there any other software dependencies for the GCC software package that must be installed. Treat my server as a fresh install with your gcc 3.4.3 installed in /usr/local/pa20_64. If so, what additional software needs to be installed or compiled?

Phil
Philip Reyniers
Advisor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

I get the following error:

#include
int main() { printf("Ok\n"); return(0); }

I used the command:

gcc64 -o try -g -O -D_HPUX_SOURCE -mpa-risc-2-0 -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -L/usr/local/lib -L/lib/pa20_64 try.c -lnsl -lnm -ldb -ldl -ldld -lm -lsec -lc
./try

and I got the following output:

/usr/local/lib/libdb.sl: file not recognized: File format not recognized
collect2: ld returned 1 exit status
I can't compile the test program.
You have a BIG problem. Shall I abort Configure [y]
Ok. Stopping Configure.
H.Merijn Brand (procura
Honored Contributor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

You're building a 64bit perl, just drop -L/usr/local/lib, which only hosts 32bit libs and those are incompatible with 64bit objects on pa-risc systems

libdb (BerkeleyDB) does not come standard with HP-UX, so if you have installed it from the source, just rebuild the package with +DA2.0w and install in the apropriate lib path

if you got it from the porting center as a depot, check if they already made a 64bit port.

If you cannot manage either, and you still nedd a 64bit libdb.sl for 11.11, you could ask me to put my 4.2 port on my site.

If you don't need it, remove the entries from config.sh and make again

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
Philip Reyniers
Advisor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

Merijin,

A couple quick questions:

1). What is the significance of the "ccdlflags" -Wl,-E -Wl,-B,deferred. More specifically, the "-B, deferred" flags. Because, when I perform the compile I get an "ld" unknown -B option against the DynaLoader. However, when I perform the make having set only the "-Wl, -E" options, everything compiles and tests with only one exception--"PXDB aborted".

2). What is the significance of the "PXDB aborted"?

3). If gdb was desired, how is it linked in after the perl build?

4). What is the significance of the ldb library? I do not seem to get a clean compile if I use the -ldb flag.

Development Notes:

1.) For the Configure and make the LD_LIBRARY_PATH is unset.
2). Configure is performed using only "-Dusedevel -Dcc=gcc64 -Duse64bitall" options.
3). Make is performed using only "make", "make test", and "make install". No additional make options are supplied from the command line.
4). Server is a HPUX 11.11 PARISC 9000/785/B2000
5). Development environment is using pa20_64 libraries only.
6). GCC64 is Merijin's 64 bit gcc 3.4.3

Sincerely,

Philip
H.Merijn Brand (procura
Honored Contributor

Re: HPUX 64Bit Perl 5.8.3 Compile Problems

> Merijin,

M e r i j n (drop the second 'i')

>
> A couple quick questions:
>
> 1). What is the significance of the "ccdlflags" -Wl,-E -Wl,-B,deferred. More
>
> specifically, the "-B, deferred" flags. Because, when I perform the compile

that is for deferred loading. See the man pages for chatr, ldd, and ld for
more details

> I get an "ld" unknown -B option against the DynaLoader. However, when I
> perform the make having set only the "-Wl, -E" options, everything compiles
> and tests with only one exception--"PXDB aborted".

You are still somehow managing to mix HP's ld and GNU ld. The hints should be
able to detect which loader you are using, but it screws up.

Be sure to have the correct combination and set your $PATH to reflect that

# export PATH=/usr/local/pa20_64/bin:$PATH

*before* you start Configure

> 2). What is the significance of the "PXDB aborted"?

GNU ld does not support some debug features on HP-UX

> 3). If gdb was desired, how is it linked in after the perl build?

it is not desired, nor needed

> 4). What is the significance of the ldb library? I do not seem to get a
> clean compile if I use the -ldb flag.

That's BerkeleyDB. It's not part of the core, nor part of HP shipments.
Problem is most likely that you do not have a 64bit version of those libs, and
it finds a 32bit (incompatible) version of libdb somwhere else in the lib
search path. It doesn't know it's unusable when it finds it

> Development Notes:
>
> 1.) For the Configure and make the LD_LIBRARY_PATH is unset.

And what's the problem in that?
IIRC it's set later during make.

> 2). Configure is performed using only "-Dusedevel -Dcc=gcc64 -Duse64bitall"
> options.

DO NOT USE -Dusedevel on stable releases! -Dusedevel is there for the
development track (5.9.x leading towards 5.10), and absolutely not meant for
stable releases

Configure might have /some/ problems in still getting it right. It's just too
darn hard to solve. This is because it now finds gcc64 from the define, but it
probably will still prefer the HP ld found earlier in $PATH than GNU ld

To prevent this, make sure the GNU path is in front, like stated earlier

# export PATH=/usr/local/pa20_64/bin:$PATH
# sh ./Configure -Duse64bitall -Dcc=gcc64 -A prepend:libswanted='cl pthread '

> 3). Make is performed using only "make", "make test", and "make install". No
> additional make options are supplied from the command line.

Right. To make a slightly more elaborate report (only for yourself), you could
consider replacing the test with

# make test_harness

> 4). Server is a HPUX 11.11 PARISC 9000/785/B2000

I don't know that box. What CPU does it have?

> 5). Development environment is using pa20_64 libraries only.
> 6). GCC64 is Merijin's 64 bit gcc 3.4.3

That's fine. I use it myself too (though I write my name without the second i)

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn