Need help to compile and create python64 bit (2.7.9) on Solaris10

Hi,

I am trying to build python(2.7.9) 64 bit from source on solaris10. Using the below to compile

./configure CFLAGS=-m64 LDFLAGS=-m64

But getting errors like below while executing make

make: Fatal error: Command failed for target `libinstall'

OS info:

isainfo -v
64-bit amd64 applications
32-bit i386 applications
uname -r
5.10
cat /etc/release
                       Solaris 10 10/09 s10x_u8wos_08a X86

Need to know how to compile to build 64 bit python from source. Am i missing to include some other flags during configure?

TIA

Did you look for libinstall ? its permissions and where/what it is?
From what I remember in older days at a SUN presentation of its strategy and evolution (like including X86 servers in roadmap...) I remember interventions of people for the local university, and and more from CERN complaining saying that solaris10 on X86 was not all that 64bits OS and when will it be...
You may have 2 distinct libraries one for 32 and one for 64, be sure to set the path accordingly

Hi,

While debugging I came to know that the following error line appears many times

WARNING: renaming "itertools" since importing it failed: ld.so.1: python: fatal: /usr/sfw/lib/libgcc_s.so.1: wrong ELF class: ELFCLASS32
building 'future_builtins' extension
WARNING: renaming "future_builtins" since importing it failed: ld.so.1: python: fatal: /usr/sfw/lib/libgcc_s.so.1: wrong ELF class: ELFCLASS32
building '_random' extension

The above same error line appears many times. I have just copied little

I have also changed the configure line as below,

./configure  CC="gcc -m64" CXX="g++ -m64" CFLAGS=-m64 LDFLAGS="-L /usr/sfw/lib/amd64/"

And i have added environment variable LD_LIBARAY_PATH as follows where 64bit libraries are available

LD_LIBARAY_PATH=/usr/lib/64/ld.so.1

I dont know why it is pointing to 32 bit library only(/usr/sfw/lib/libgcc_s.so.1) instead of "/usr/sfw/lib/libgcc_s.so.1" it should take /usr/sfw/lib/amd64/libgcc_s.so.1

TIA

Go to your directory /usr/sfw/lib/ and do an ls -l and post back here the results wrapped in code taggies.

Let's make sure you sym links to the shared libs are correct.

I see a lot of different directories in your post:

  • /usr/sfw/lib/
  • /usr/sfw/lib/amd64
  • /usr/lib/64/

Let's make sure they are as they should be.

Thanks.

Hi,

Contents of /usr/sfw/lib with respective to gcc

drwxr-xr-x   3 root     bin            3 Nov 16  2010 gcc
lrwxrwxrwx   1 root     root          13 Nov 16  2010 libgcc_s.so -> libgcc_s.so.1
-r-xr-xr-x   1 root     bin        40212 Jan 23  2005 libgcc_s.so.1
drwxr-xr-x   2 root     bin           59 Sep  3  2015 amd64
lrwxrwxrwx   1 root     root           5 Nov 16  2010 64 -> amd64

Contents of /usr/sfw/lib/amd64 with respective to gcc

lrwxrwxrwx   1 root     root          13 Nov 16  2010 libgcc_s.so -> libgcc_s.so.1
-r-xr-xr-x   1 root     bin       172408 Jan 23  2005 libgcc_s.so.1
lrwxrwxrwx   1 root     root          13 Nov 16  2010 libgcc_s_amd64.so -> libgcc_s.so.1

That reminds me some time ago when I compiled python and had issues, are you sure you fullfill all the prerequisites? especially about gcc? as I see your libgcc is of 2005...

Hi,

Yes. The gcc is not the latest version . It comes with the Solaris. I don't think thats an issue.. Only thing is that, while compiling it should take from /usr/sfw/lib/amd64 which is for 64 bit..

Don't know in which flag I need to include that while compiling..

TIA

And this directory, from your post?

LD_LIBARAY_PATH=/usr/lib/64/ld.so.1

From the man page:

By default, the configuration file /var/ld/ld.config is used for 32-bit objects, and the configuration file /var/ld/64/ld.config for 64-bit objects.

1 Like

I think I had to use a gcc v7 for it to work... But wont be affirmative because the same week I compiled on the same architecture (aix) a python 3.X...

1 Like

I think you are on the right track, Victor.