RE: multiple .a files linking issues

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

 



Hi Robin,

Expanding on Harald's response, the order on the command line for gcc and g++ is important.

g++ /mylib/libA.a /mylib/libB.a myapp.o -o myapp

This is what the linker does in processing from left-to-right:

1. libA.a -- don't need any symbols from there, ignore it.
2. libB.a -- don't need any symbols form there, ignore it.
3. myapp.o -- .o files are linked in wholesale, with outstanding symbols for A and B
4. Hmmm, myapp is missing A and B symbols.  ERROR.

Try putting the object files first, and the libraries in dependency order instead:

g++ -o myapp myapp.o /mylib/libB.a /mylib/libA.a

Since B depends on A (but not vice versa, fortunately), B should appear first.

Although not the situation you are running into, sometimes there is a circular dependency between two libraries.  One way to resolve that is to specify one library twice:

g++ -o foo main.o /mylib/libAlpha.a /mylib/libBeta.a /mylib/libAlpha.a

A better solution is to combine both libraries into one library.  But that's not always feasible.

HTH,
--Eljay


[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