Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which format does static library (*.lib) files use? Where can I find "Official" specifications of *.LIB file structure/format?

Just now I found that static libraries in *nix systems, in other words *.a libraries are nothing but archives of relocatables(*.o files) in ar fromat.

  1. What about static libraries(*.lib files) in windows? Which format are they in?

  2. I found an article (archived copy 1, archived copy 2) which explains *.lib file structure. But Where can I find "Official" specifications of *.lib file structure/format?

  3. Other than ar.exe of mingw is there any tool from Microsoft which extracts relocatable objects of *.lib & *.a files?

EDIT:

I wonder why I'm unable to get to this question. If there are no official specifications. Then how does the compiler ('linker' to be more correct) writers work with *.LIB files?

like image 383
claws Avatar asked Mar 03 '10 13:03

claws


2 Answers

I found that *.LIB file uses the ar file format.

Official Specifications: Section 7. "Archive (Library) File Format" of Microsoft Portable Executable and Common Object File Format Specification describes this format.

like image 66
claws Avatar answered Oct 07 '22 06:10

claws


mingw's ar works just fine on *.lib files - even ones created under VisualStudio.

We've actually used it in the past to pull out parts of a library we needed when it contained some other stuff we couldn't link with (due to conflicts with other libraries). Kinda hacky, but it works.

like image 43
T.E.D. Avatar answered Oct 07 '22 08:10

T.E.D.