Solved

make: "GNU ld" and "relocations remain against allocatable but non-writable sections"

Posted on 2004-10-11
11
2,264 Views
Last Modified: 2013-12-27
Hey Gang,

I am trying to configure and build wxPython on Solaris 9.  I get a good configure, it creates the Makefile, but when I "Make", ig the following error...

.
.
.
free                                0x68        lib/libwxzlibd.a(wxzlib_zutil.o)
inflate_blocks                      0x5cc       lib/libwxzlibd.a(wxzlib_inflate.o)
.urem                               0x768       lib/libwxzlibd.a(wxzlib_deflate.o)
.urem                               0x3ec       lib/libwxzlibd.a(wxzlib_inflate.o)
.urem                               0x150       lib/libwxzlibd.a(wxzlib_adler32.o)
.urem                               0x160       lib/libwxzlibd.a(wxzlib_adler32.o)
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
gmake: *** [lib/libwx_based-2.5.so.1.0.0] Error 1
#

It is the same whether I use "make" or "gmake".  The web says the solution is to use "GNU ld" instead of "/usr/ccs/bin/ld" ... but I can't FIND a GNU "ld".  GCC and GNU binutils are installed.  To what "ld" is this recommendation referring to??!!

Thanks!
M
0
Comment
Question by:Mike R.
  • 6
  • 5
11 Comments
 
LVL 3

Author Comment

by:Mike R.
ID: 12283059
OK...update already.   I have discovered that the SUN version of GNU binutils which comes from sunfreeware does NOT contain the "ld".  After installing a version from "gnu.org" into its own directory I got a version of GNU "ld" verified as ...

# /opt/sfw/GNU/bin/ld -V
GNU ld version 2.10.1 (with BFD 2.10.1)
  Supported emulations:
   elf32_sparc
   elf64_sparc

NOW, although this version of "ld" is the only one in the path "I.E. which ld reports the correct GNU version), I am not sure if it is using the correct version of "ld"...if for no other reason than the error is continuing, and should not be.

Help!
M
0
 
LVL 3

Author Comment

by:Mike R.
ID: 12283128
OK...update number 2.

After installing GNU binutils from GNU (NOT SUN) I copied the original linkers to an "orig" file, and linked the GNU linker in their stead.  I.E...

#cp -p /usr/ucb/ld /usr/ucb/ld.orig
#ln -s /opt/sfw/GNU/bin/ld /usr/ucb/ld
#cp -p /usr/ccs/bin/ld /usr/ccs/bin/ld.orig
#ln -s /opt/sfw/GNU/bin/ld /usr/ccs/bin/ld

This seems to be working (as I am able to make without those errors) however, just for gits and siggles (and points) could someone please tell me what the CORRECT FRIGGIN METHOD for accomplishing this WOULD have been!! :-D

Thanks!
M
0
 
LVL 38

Expert Comment

by:yuzh
ID: 12283632
Hi rightmirem,

    When I use GNU tools (gcc, make, autoconf ... from http://sunfreeware.com/), to
make sure I use them, I normaly do:

PATH=/usr/local/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export PATH LD_LIBRARY_PATH

before configure and make.

You can Python from http://sunfreeware.com/ as well.

Since you have solved the problem by yourself, do you want me to PAQ and refund the
points for you?

Cheers!

yuzh
0
 
LVL 3

Author Comment

by:Mike R.
ID: 12283861
Um...not yet on the points.  You can have them if you can help me understand why this was not working.

Regarding the above, I did have the correct gcc and ld in the paths (PATH and LD_LIBRARY_PATH) and had specifically removed the /usr/ccs and /usr/ucb paths from the both of the above...but apparently it was still finding the ld from one or the other (/usr/ccs or /usr/ucb.)  The build would not complete until I replaced these files wiht the GNU ld.

I wish I had known there was a wxPython on sun freeware.  I was using a download done by a previous admin.  Wasted a lot of time :-)

Thanks!
M
0
 
LVL 38

Expert Comment

by:yuzh
ID: 12283996
It have something to do with your PATH settings, most people put /usr/ccs/bin in front
of /usr/local/bin, in that case when you do:

which ld, it will give you:
/usr/ccs/bin/ld

When I use GNU tools, I do:
PATH=/usr/local/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

export PATH LD_LIBRARY_PATH

to force it to use /usr/local/bin/ld


0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 38

Expert Comment

by:yuzh
ID: 12284110
You might be able to change the LD flag in the Makefile to:

LD=/usr/local/bin/ld

to force it to use GUN ld.

or modify: /usr/share/lib/make/make.rules file (I would not change this one!)
0
 
LVL 3

Author Comment

by:Mike R.
ID: 12284234
I looked in the Makefile, but could not see an OBVIOUS reference to LD.  I was not sure if it might have been referenced differently.  I will check the make.rules file tomorrow.

Thanks again!
M
0
 
LVL 38

Accepted Solution

by:
yuzh earned 500 total points
ID: 12284435
I think I found the problem, the gcc from: http://sunfreeware.com/ was configure with
--with-ld=/usr/ccs/bin/ld

see Steven M. Christensen's doc:
     http://www.sunfreeware.com/gcc.html
0
 
LVL 3

Author Comment

by:Mike R.
ID: 12289700
Ahhh soo...that could be (newly inherited system to me, so I am not sure where the gcc came from, or how it got installed.)  Is there a way around this (I.E. a switch when configuring) or am I stuck :-)

Thanks!
M
0
 
LVL 3

Author Comment

by:Mike R.
ID: 12291874
I am going to quit this thread and assign some points...but I'm still having some difficulties with a DIFFERENT section of the wxPython install...so look for the new thread and THANKS!

M
0
 
LVL 38

Expert Comment

by:yuzh
ID: 12293817
You can try

configure --with-gun-ld=/usr/local/bin/ld

The last time I built Python was 2 years+ ago, can't remember what options support with
the Python configure script. check the README file before you run configure script.

I'll have a look at  your new question later.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
I promised to write further about my project, and here I am.  First, I needed to setup the Primary Server.  You can read how in this article: Setup FreeBSD Server with full HDD encryption (http://www.experts-exchange.com/OS/Unix/BSD/FreeBSD/A_3660-S…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now