This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
RE: prefer static linking
Following the chain and playing around with the makefile has yielded the
following, judicious use of both -Bdynamic and -Bstatic in front of the
different -l statements does in fact change the behavior of the linker
so that the desired outcome is achieved. Thank you both for your input.
Patrick Weaver
China Lake, CA
Voice: (760) 939-8744
Email: john.p.weaver(at)navy.mil
-----Original Message-----
From: Jonathan Wakely [mailto:jwakely.gcc@gmail.com]
Sent: Tuesday, November 29, 2011 11:29
To: Weaver, John P CIV
Cc: gcc-help@gcc.gnu.org
Subject: Re: prefer static linking
On Nov 29, 2011 7:03 PM, "Weaver, John P CIV" wrote:
>
> The gcc compiler prefers to use dynamic libraries in the linking
phase.
GCC just calls the linker, any preference is the linker's.
For the GNU linker -Bdynamic and -Bstatic allow you to control whether
dynamic or static libraries are used for each lib named with -l
See 'man ld'
-----Original Message-----
From: Ian Lance Taylor [mailto:iant@google.com]
Sent: Tuesday, November 29, 2011 11:21
To: Weaver, John P CIV
Cc: gcc-help@gcc.gnu.org
Subject: Re: prefer static linking
"Weaver, John P CIV" <john.p.weaver@navy.mil> writes:
> The gcc compiler prefers to use dynamic libraries in the linking
> phase. When porting software from one machine to another it is
> frequently desirable to link to static libraries as much as possible
> to account for different versions of the libraries. The -static flag
> is useful when you do not need any dynamic library support but causes
> the linker to fail if there is only a dynamic library for a particular
> call. Is there a way to ask the linker to use static libraries when
> possible and report the dynamic libraries that are needed to complete
> the linking process?
I am not aware of any such option.
If you are using the GNU linker, you can tell it to prefer dynamic
libraries using -Bdynamic and tell it to use only static libraries using
-Bstatic, but I don't know of any option to tell it to prefer static
libraries but use dynamic libraries if they are available.
Ian