How to build a static library using another one?

Oscar Fuentes ofv@wanadoo.es
Thu Jul 25 18:40:00 GMT 2002


Long Li <long21st@yahoo.com> writes:

> Hi, Guys,
> 
> I am a newbie on making library in C & C++. I have
> some c++ souce code files(a.cpp, b.cpp) and a C++
> library(libutil.a) at hand. The c++ source code
> files(a.cpp, b.cpp) use the functions of library
> libtuil.a. I would like to build a single library
> using them. This is what I tried:
> 
> I first compiled the source code files. Then I use
> 
> ar rc libcpp.a a.o b.o libutil.a
> ranlib libcpp.a
> 
> It works fine. However, later when I used this library
> in my other souce files, I got some compile error. It
> seems the compiler found some undefined symbols in a.o
> and b.o, those symbols happen to be the functions in
> libtutil.a. 
> 
> Could you tell me how to make it work?

Try this:

move libutil.a, a.o and b.o to an empty directory.

On that directory do:

ar x libutil.a

ar rc libcpp.a *.o
ranlib libcpp.a

See if libcpp.a works for you. If it doesn't, try creating a dummy
executable that uses a.o, b.o and libutil.a. If it still complains
about undefined symbols, maybe the problem is in your object files,
not on the procedure for building the library.

-- 
Oscar




More information about the Gcc-help mailing list