[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Using libtool to package whole archives in shared library
From: |
Andy Falanga (afalanga) |
Subject: |
Using libtool to package whole archives in shared library |
Date: |
Wed, 4 Mar 2015 22:43:19 +0000 |
I'm working on converting a home-grown makefile mess to using the autotools
(the GNU build system) for building and deploying our shared library. The
shared library exists in two forms: a traditional C++ *.so and a python module
which is also a *.so but is, obviously, consumable by python only. The
directory structure looks like this:
Main (has a Makefile.am and configure.ac files)
|
|-Shared
| |
| |- HwMgmt (Makefile.am, makes libhwmgmt.a and libhwmgmt.so)
| |- Misc (Makefile.am, likewise for libmisc)
|
|-sata (Makefile.am, produces libsatacpp.so and sata.so)
| |
| |-satacpp (sources for the C++ API for SATA lib)
| |
| |-sata (sources wrapping satacpp,hwmgmt,misc in boost.python)
In our home-grown system, we build HwMgmt, Misc and satacpp into *.a files and
then, when building sata.so for python these *.a files were wrapped between
-Wl,--whole-archive ... -Wl,--no-whole-archive. I've got to replicate this
into the GNU Build System. I've tried several attempts and nothing has yet
worked. Using the GNU docs, I've placed these libraries using
sata_la_LIBADD = /path/to/libsatacpp.la /path/to/libHwMgmt.la ...
Which links with the dynamic libraries built earlier. This isn't what I'm
after. I've tried something like this:
sata_la_LDFLAGS = -Wl,--whole-archive /path/to/libsatacpp.a ...
-Wl,--no-whole-archive
This variable is preserved throughout Makefile.in and Makefile. However, when
make is run, it seems that libtool yanks the libraries between --whole-archive
and --no-whole-archive and places them elsewhere. That is, I always ended with
"-Wl,--whole-archive -Wl,--no-whole-archive" with my *.a file unceremoniously
moved to a different place in the command line.
What is the proper way to tell libtool to wrap the entire batch of symbols into
the final python library?
I'm using CentOS 6 which, sadly, prefers to be older than the hills in its
toolset. The versions are as follows:
autoconf: 2.63 (I think I recently updated this for something
unrelated)
automake: 1.11.1
libtool: 2.2.6b (This one appears to be woefully old)
Thanks,
Andy
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Using libtool to package whole archives in shared library,
Andy Falanga (afalanga) <=