#322 closed task (invalid)
Is `configure --enable-staticbin` really creating a statically linked binary?
Reported by: | Jari Häkkinen | Owned by: | Jari Häkkinen |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | core | Version: | trunk |
Keywords: | Cc: |
Description (last modified by )
I am not sure that we actually create an "as static as possible" binary with the configure option. This needs to be examined.
We'll remove libtool support from svndigest, it should not be there. This ticket becomes invalid. A need for creating completely static binaries may be targetet later when that need appears.
Change History (11)
comment:1 follow-up: 5 Changed 15 years ago by
comment:2 Changed 15 years ago by
We use LDFLAGS=-static
to enable build of static binary. Elsewhere I found out that this likely not the right flag to use. From the libtool manual:
-static
If output-file is a program, then do not link it against any uninstalled shared libtool libraries. If output-file is a library, then only create a static library.
-all-static
If output-file is a program, then do not link it against any shared libraries at all. If output-file is a library, then only create a static library.
In other words, if we use -static
we will link against shared installed libraries. Not exactly what we intended. The solution seems to be to use flag -all-static
instead.
However, when I tried this quickly on svndigest it did not pass through, but complained about something that looked like APR was missing (well no static APR). Will look into that in more detail when I have time.
comment:3 Changed 15 years ago by
I am not sure that going for -all-static is a great idea. The reason for my doubt is that modern systems do not come pre-installed with static-libraries. If -all-static requires static libraries to exist, then most systems will fail creating the binary.
The "as static as possible" refers to make the linker use as many static libraries as possible ... at least the libsvndigest should be statically linked.
comment:5 follow-ups: 6 7 Changed 15 years ago by
Status: | new → assigned |
---|
Replying to peter:
I think staticbin and dynamicbin should not be mutually exclusive.
We could add a configure option flag `--disable-sharedbin'.
There are nice examples in the libtool of this kind of features
http://www.gnu.org/software/libtool/manual/libtool.html#Using-Automake
What do you mean? At compile time we can only create one binary. This must be statically or dynamically linked? The default is to create a dynamically linked binary. --enable-staticbin
will change this to create a static binary, at least the libsvndigest dependency will go away.
comment:6 Changed 15 years ago by
Replying to jari:
Replying to peter:
I think staticbin and dynamicbin should not be mutually exclusive.
We could add a configure option flag `--disable-sharedbin'.
There are nice examples in the libtool of this kind of features
http://www.gnu.org/software/libtool/manual/libtool.html#Using-Automake
What do you mean? At compile time we can only create one binary. This must be statically or dynamically linked? The default is to create a dynamically linked binary.
--enable-staticbin
will change this to create a static binary, at least the libsvndigest dependency will go away.
Well in principle you can create as many binaries as you want. Only one named svndigest
though. It was just an idea; I don't really care about it. I'm more concerned about waht we mean by staticbin or what we mean by the sentence: A statically linked 'svndigest' binary will be created. in configure
. This is misleading. And in README
we say: --enable-staticbin
will create a static svndigest binary, which also should be clarified.
comment:7 follow-up: 8 Changed 15 years ago by
Replying to jari:
Replying to peter:
The default is to create a dynamically linked binary.
--enable-staticbin
will change this to create a static binary, at least the libsvndigest dependency will go away.
But is there any libsvndigest dependency? I tried
$ make && (cd lib && make clean) && ./bin/svndigest -h
and it worked perfectly, so what does dependency mean here?
comment:8 follow-up: 9 Changed 15 years ago by
Replying to peter:
Replying to jari:
Replying to peter:
The default is to create a dynamically linked binary.
--enable-staticbin
will change this to create a static binary, at least the libsvndigest dependency will go away.But is there any libsvndigest dependency? I tried
$ make && (cd lib && make clean) && ./bin/svndigest -hand it worked perfectly, so what does dependency mean here?
Hm after [667] that seems to not be true anymore.
comment:9 Changed 15 years ago by
Replying to peter:
Replying to peter:
Replying to jari:
Replying to peter:
The default is to create a dynamically linked binary.
--enable-staticbin
will change this to create a static binary, at least the libsvndigest dependency will go away.But is there any libsvndigest dependency? I tried
$ make && (cd lib && make clean) && ./bin/svndigest -hand it worked perfectly, so what does dependency mean here?
Hm after [667] that seems to not be true anymore.
Yes, because changeset:667 actually makes autotools to create a shared library. Before 667 there was no shared library and therefore svndigest was static wrt libsvndigest.
To check library dependencies for a binary use on linux:
ldd progname
on Macosx
otool -L progname
comment:10 Changed 15 years ago by
Description: | modified (diff) |
---|---|
Resolution: | → invalid |
Status: | assigned → closed |
comment:11 Changed 15 years ago by
Milestone: | svndigest 0.x+ |
---|
Avoid having closed tickets in milestone:"svndigest 0.x+"
I think staticbin and dynamicbin should not be mutually exclusive.
We could add a configure option flag `--disable-sharedbin'.
There are nice examples in the libtool of this kind of features
http://www.gnu.org/software/libtool/manual/libtool.html#Using-Automake