automake
[Top][All Lists]
Advanced

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

Re: What does --with-pic really mean?


From: Kent Boortz
Subject: Re: What does --with-pic really mean?
Date: Mon, 29 Oct 2007 11:20:24 +0100
User-agent: Gnus/5.110003 (No Gnus v0.3) Emacs/21.2 (darwin)

Kent Boortz <address@hidden> writes:
> I want the "*.a" files to contain PIC objects, so that they can be
> used to create other shared objects. What I really want is to create
> the "*.a" files from the objects in ".libs/*.o", i.e. what is used for
> creating shared objects. But there is no option for that that I know
> of. So the only other option is to try compile all objects with PIC.

Just to clarify, short term I just want all objects to be "suitable
for inclusion into another shared object", i.e. PIC compiled into a
"*.a".

Long term I might change all library targets to be LT-libraries, and
the situation could be like this

  - There is one library "a" that is "internal" to the build.

  - There is one library "b" that is both used internally in the
    build, and to be installed as static library, but the static
    library is to be PIC.

  - There is one library "c" that is both used internally in
    the build, and is to be installed, both as shared and static,
    but the static library is to be PIC.

  - There is one executable "d" that depends on both "a", "b" and "c",
    and will link with static versions of them all. For effeciency
    both "a" and "b" should be non PIC.

Hmm.... maybe I can do this, by using multiple targets for the same
library, "internal" and "external" with different names, and give the
"-prefer-pic" to libtool in the cases where I want it, without using
--with-pic to configure? I.e. can I use something like this, assuming
we have source files "a.c" "b.c", "c.c" and "d.c"?

  bin_PROGRAMS       = d
  pkglib_LTLIBRARIES = b c
  noinst_LTLIBRARIES = b_int c_int
  noinst_LIBRARIES   = a

  d_LDADD            = a.a b_int.la c_int.la

  libb_int_la_SOURCES = $(libb_la_SOURCES)
  libc_int_la_SOURCES = $(libc_la_SOURCES)

  libb_la_LDFLAGS = -prefer-pic -static
  libc_la_LDFLAGS = -prefer-pic

If "-prefer-pic" affects the creation of static libraries at all?

Drawback is of course that each C source file is compiled more times
than actually needed.

The "-prefer-pic" flag seems undocumented, but so is "--with-pic",

kent

-- 
Kent Boortz, Senior Production Engineer
MySQL AB, www.mysql.com
Office: +46 18 174400 ext. 4450 (VoIP)
Office: +46 19 182931
Mobile: +46 70 2791171




reply via email to

[Prev in Thread] Current Thread [Next in Thread]