Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

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

Posted on 2004-10-11
11
2,277 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
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
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
 
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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Let's say you need to move the data of a file system from one partition to another. This generally involves dismounting the file system, backing it up to tapes, and restoring it to a new partition. You may also copy the file system from one place to…
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 …
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
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.:

808 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