Library dynamic dependencies on Solaris
Kirsten Mayer
kmayer@isw.net.au
Wed Sep 13 01:17:00 GMT 2006
Hi,
I need to distribute a custom dynamic library (or api) that depends on
another dynamic library (a database) but I can't get the database to be
found by the api except by putting the database in a specific directory,
which means whoever uses my library must replicate my directory structure.
Specifically, if I use the option -LDIR ./release/libmydb.so when
compiling myapi it will find libmydb.so only if I place libmydb.so in the
subdirectory ./release. Alternatively, if I use the option -L ./release
-lmydb when compiling myapi it will not be able to find mydb.
IN DETAIL:
I am building two C++ libraries on Solaris release 5.9 using gcc 2.95.3.
One library, called "myapi", needs to link dynamically to the other,
called "mydb".
I have tried the following commands to build each library:
mydb: $(MYDB_OBJS)
g++ -fPIC -lstdc++ -shared -lz -o ./release/libmydb.so -D_NDEBUG
$(MYDB_OBJS)
myapi: $(components) mydb $(DIR_API)/MyAPI.cpp $(DIR_API)/MyAPI.h
$(DIR_API)/StdAfx.cpp
g++ -shared -O3 -fPIC -o ./release/libmyapi.so -D_SOLARIS
-D_NDEBUG \
-L ./release -lmydb -R . $(DIR_API)/MyAPI.cpp
$(DIR_API)/StdAfx.cpp $(components)
However, libmyapi.so can't find libmydb.so:
$ ldd release/libmyapi.so
libmydb.so => (file not found)
The best I can do to find the library that myapi depends on is put it into
a fixed directory with this command:
myapi : $(components) ./release/libmydb.so $(DIR_API)/MyAPI.cpp
$(DIR_API)/MyAPI.h $(DIR_API)/StdAfx.cpp
g++ -shared -O3 -fPIC -o ./release/libmyapi.so -D_SOLARIS \
-LDIR ./release/libmydb.so "$(DIR_API)/MyAPI.cpp"
$(DIR_API)/StdAfx.cpp $(components)
In this case, libmyapi.so can find libmydb.so only in the ./release
directory:
$ ldd release/libmyapi.so
libmydb.so => ./release/libmydb.so
I don't want users of libmyapi.so to have to create a ./release
subdirectory to be able to use libmydb.so
If someone can tell me what command I should use, I would be very
grateful.
Many thanks in advance.
Kirsten
More information about the Gcc-help
mailing list