Re: [xml] Mac OS-X: Why are binaries linked against libxml2.dylib?
- From: Rush Manbert <rush manbert com>
- To: Nathanael Noblet <nathanael gnat ca>
- Cc: xml gnome org
- Subject: Re: [xml] Mac OS-X: Why are binaries linked against libxml2.dylib?
- Date: Fri, 03 Jun 2005 11:34:50 -0700
Nathanael Noblet wrote:
On Jun 3, 2005, at 10:54 AM, Rush Manbert wrote:
Nathanael Noblet wrote:
On Jun 3, 2005, at 10:39 AM, Rush Manbert wrote:
Well, I could if I wanted to write my own makefile. All this stuff
is set up by ./configure, but there doesn't appear to be a
--with-static-binaries (or equivalent) flag. One of my goals is to
use the package as distributed to build and install, then do what I
need to do to make it usable in my situation. I don't want to
maintain my own xmllint project, for example. (I know it's pretty
simple in this case, but I have an identical problem with xsltproc,
which has more complicated dependencies...)
You don't need to create your own makefiles. Set the flags before
you call configure or make so for example:
LD_FLAGS=..... CFLAGS=... ./configure
and then
LD_FLAGS=.... CFLAGS=... make
Oh, sorry. Yes, that's true if it were a command line flag. However,
the link line looks like this:
gcc -g -O2 -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type
-Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts
-Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align
-Wwrite-strings -Waggregate-return -Wstrict-prototypes
-Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -o
.libs/xmllint xmllint.o ./.libs/libxml2.dylib -lpthread -lm
and I need it to look like this:
gcc -g -O2 -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type
-Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts
-Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align
-Wwrite-strings -Waggregate-return -Wstrict-prototypes
-Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -o
.libs/xmllint xmllint.o ./.libs/libxml2.a -lpthread -lm
I don't know of a way to change this with the environment variables.
I'm no expert in this area, that is for sure, but I'm pretty sure you
can tell it during the configure stage what to do, using either
configure flags or environment variables to use the static
compilation, which would propagate to the makefile and change that for
you. The exact method to do this, well I don't know it. I've seen
places where I used configure and environment variables to affect
these things.
For example when compiling your program, after you've compiled
libxml2.a you could do
LD_FLAGS=-L./path/to/parent/of./.libs/libxml2.a ./configure
or use ./configure --with-libxml2-dir=/path....
??
The -L would work if the library were specified as -lxml2, because the
loader would expand that and do a search. Even this seems to be a
problem on the Mac. When you say -lxml2 on a link line, they seem to
search the library paths for libxml2.*, because when you have
libxml2.dylib and libxml2.a in the same directory, they choose to link
against libxml2.dylib. My guess is that this is because you can't
statically link against the OS libraries on the Mac, (
http://developer.apple.com/qa/qa2001/qa1118.html ) they only allow
dynamic linking. This is moot, though, because the library is explicitly
named as ./.libs/libxml2.dylib and there's no search for that.
What you say about the configuration is what I'm looking for. If you run
./configure --help, nothing sounds like it changes this behavior. I'm
hoping that someone (Daniel probably) will know of a configuration
option that might be missed in the help output. I could start tearing
apart the configure script, but I'm not an expert in those. If there is
such an option, it probably applies to any Unix platform, so anyone out
there who's listening could chime in...
- Rush
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]