This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How to build a static library using another one?


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]