Solved

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

Posted on 2004-10-11
11
2,286 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.
[X]
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
  • 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering 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

When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
Every server (virtual or physical) needs a console: and the console can be provided through hardware directly connected, software for remote connections, local connections, through a KVM, etc. This document explains the different types of consol…
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 navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

733 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