Greetings,

In the build sequence below, ld issues a relocation error for libc.a(malloc.o), indicating it [libc.a, as I read it] should be recompiled with -fPIC

Googling the key words in the message reveals a few of hits, all with similar advice; but the advice is directed to an application specific library, not libc

Is this a generic issue for amd64? In a cosmic sense, probably not, we have a lot of shared libs building on the amd64. And FWIW I know that the same build sequence works on i386.

A possibility is that there is a contradictory use of flags on the cc line, at least for the amd64. Does anybody have insight on this?

Alternatively, should I take the advice and look for a work-around -- such as building my own libc with -fPIC ? This doesn't seem right for a port. I'm concerned about what else might break.

The application in question is OpenBSD ports devel/eclipse-3.1p6, which is not currently qualified for the amd64, but hey, we're giving it a shot; there are only a about five cc compiles in the entire build, we're about 2/3 of the way through, and most of the job is ant and ecj, which are running quite happily on the amd64 jamvm/classpath.

I'm running

OpenBSD 3.9-current (GENERIC) #556: Sat May 27 18:32:05 MDT 2006
   [EMAIL PROTECTED]:/usr/src/sys/arch/amd64/compile/GENERIC

Regards,
Fred Druseikis


build.jars:
    [echo] Building libcore_3_1_0.so.2.0
[echo] cc -o libcore_3_1_0.so.2.0 -shared -fPIC -I/home/hubert/openbsd/ports/devel/eclipse/sdk/w-eclipse-sdk-3.1p6/plugins/org.eclipse.core.resources.openbsd/../org.eclipse.core.resources.openbsd/src/ -I/usr/local/exodus/include -I/usr/local/exodus/include/openbsd libcore_3_1_0.so.2.0 -static -lc

[apply] /usr/bin/ld: /usr/lib/libc.a(malloc.o): relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC

   [apply] /usr/lib/libc.a: could not read symbols: Bad value
   [apply] collect2: ld returned 1 exit status
   [apply] Result: 1

Reply via email to