Compiling a shared lib

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

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

I've also tried adding

-Wl,--dynamic-list=/path/to/dynamic/list

to [2] (with the dyn list containing my_func)


Can anyone tell me where I'm going wrong and what I need to do? I feel like I need to add something extra in the linking stage, but I'm not sure what.

Thanks in advance,

Marcus.

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux