On 02/12/2010 05:53 AM, Marcus Clyne wrote: > I'm trying to compile a shared library, but am having problems. > I have one main binary, which will load one or several shared libraries > that all use a common set of functions. The functions common to all the > shared libraries I would like to store either in another shared library, > which the shared libraries themselves load, or (preferably) in the main > binary itself. > > I'm using the following commands for compilation (simplified): > > [1] gcc -Wall -fPIC -o shared.o -c file.c > [2] gcc -shared -o shared.so shared.o > > The error message I'm getting is: > > shared.o: relocation R_X86_64_PC32 against undefined symbol `my_func' > can not be used when making a shared object; recompile with -fPIC > /usr/bin/ld: final link failed: Bad value > collect2: ld returned 1 exit status > > Where my_func is one of the common functions that I want to define > outside the shared library. I get this both when my_func is defined in > the main binary, and when it is defined in another shared object > (libcommon), and I add the following to [2] > > -L/path/to/libcommon/dir -lcommon That looks right. Maybe your libcommon.so doesn't have the right name? Hard to say, you haven't provided enough details. Andrew.