Solved

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

Posted on 2004-10-11
11
2,260 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
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
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

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

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…
Using libpcap/Jpcap to capture and send packets on Solaris version (10/11) Library used: 1.      Libpcap (http://www.tcpdump.org) Version 1.2 2.      Jpcap(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html) Version 0.6 Prerequisite: 1.      GCC …
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

746 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