This is the mail archive of the cygwin mailing list for the Cygwin 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: cygwin, g++ and boost? Do I need dll.a?


Dave Korn wrote:
  Wrong reasoning.  The actual problem is that you need to remove the 'lib'
prefix when supplying a library name:

g++ -o hello -L/lib hello.cpp -lcrypt
g++ -o hello -L/lib hello.cpp -lbfd

Ordinary .a files are for static linking, .dll.a files are for runtime linking against dlls, gcc selects the right one for you by using one of the -shared or -static flags.

Err, no. gcc (by default) will use .dll.a files in preference to .a files -- more completely, the search pattern for -lxxx is, in each directory:


          libxxx.dll.a
          xxx.dll.a
          libxxx.a
          xxx.lib
          cygxxx.dll
          libxxx.dll
          xxx.dll
          libxxx.a (again, for architectural reasons)
          xxx      (this is so that stuff like -lmyspecific.o will
                    work as expected).

before moving on to the next directory in the search path.

With -static, -lxxx only looks for:

          libxxx.a
          xxx

Note that, oddly, in -static mode a MS-style library name "xxx.lib" will be ignored, while in (normal) mode it will be used if found (and the other patterns ahead of it are not found). Just an odd little quirk.

-shared is something competely different. It means: make the output file a DLL instead of an executable.

--
Chuck

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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