see my comments/questions/answers between the lines... On Tue, 16 Dec 2003 01:42:26 -0500 (EST) Pavel Roskin <proski gnu org> wrote:
On Mon, 15 Dec 2003, Andreas Boerner wrote:Problem: I need the mc on a system to be installed, where the (shared) libraries are (yet) missing; so I need a statically linked mc. I suggest to to add an option for the ./configure to allow static linkage. Doing this manually is time consuming and needed several repairs:Maybe we should make those repairs rather that introduce one more option?(gentoo linux; system is up to date (Dec, 15th, 2003))Debian unstable: glib 2.2.3, Autoconf 2.58. I'm using Automake 1.8 installed in /usr/local.
gentoo: autoconf: 2.13 automake 1.7.5 glib: 2.2.3 these are the most up-to-date; gentoo doesn't provide newer versions; I guess they are considered to be unstable...
setting environment variable LDFLAGS to -Wl,-staticIt's better to set variable on the command line: ./configure LDFLAGS="-Wl,-static"
I didn't know this; where is that documented? I searched the web for about half an hour but didn't find details on how to statically link mc. And doing it that way doesn't change anything. Why is that better?
compile error: library glib-2.0 not foundWorks for me, even if I use the environment: checking for pkg-config... /usr/bin/pkg-config checking for glib-2.0... yes checking GLIB_CFLAGS... -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include checking GLIB_LIBS... -lglib-2.0
my output is identical! checking for pkg-config... /usr/bin/pkg-config checking for glib-2.0... yes checking GLIB_CFLAGS... -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include checking GLIB_LIBS... -lglib-2.0
Since the error is on your side, you should post details, not me. Check config.log for relevant error messages.
in the attachment you find the details; output of configure is in conf.log output of make is in make.log
changing within the link command glib-2.0 to glib solved it.I think you have libglib.a but not libglib-2.0.a. The problem is either in the gentoo package or in pkg-config or in glib.m4. It depends on who misunderstood whose intentions. You may want to research this question or at least file a bug with gentoo. Even if problem is elsewhere, another distibution (Debian) made the static library compatible with pkg-config and glib.m4, and so should gentoo.
the gentoo distribution does not provide the option of static linkage at all; so I had to download the sources by myself and build it manually without the package-support of gentoo. I guess the developer from gentoo who wrote the install script for mc did not knew about the way how to compile mc statically. Since there is no configure option for that it is hard to guess...
gcc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -Wall -Wl,-static -o mc achown.o background.o boxes.o chmod.o chown.o cmd.o color.o command.o complete.o cons.handler.o dialog.o dir.o dlg.o ext.o file.o filegui.o filenot.o fileopctx.o find.o findme.o fsusage.o help.o hotlist.o info.o key.o keyxdef.o layout.o learn.o listmode.o main.o menu.o mountlist.o mouse.o option.o panelize.o popt.o poptconfig.o popthelp.o poptparse.o profile.o regex.o rxvt.o screen.o setup.o slint.o subshell.o terms.o text.o textconf.o tree.o treestore.o user.o util.o utilunix.o view.o widget.o win.o wtools.o ../edit/libedit.a ../vfs/libvfs-mc.a -lglib-2.0 -lgpm -lslang -lext2fs -lcom_err some thread references were missing... was solved by specifying ./configure --without-x ??Actually, the error messages would be more interesting than the command line. I have no idea if those messages are related to static linking. I could not reproduce this problem.
I don't want to follow this path, since I made manual modifications. Maybe the tread_... references are contained in glib-2.0, but not in glib ?? Or, more probable, some X-libraries contain thread references, since the error does not occur with --without-x
With these modifications I was able to build mc statically by sending the modified link command isolated to the shell. I suggest to be able to do: ./configure --staticThat would be equivalent to what you did initially: ./configure LDFLAGS="-Wl,-static" Adding an option doesn't automatically solve any problems with the functionality it stands for.
Technically speaking, that is true. But I disagree anyway: If there would be such an option, it is more obvious for install script writers (of the distributions) to support this option. I think you could imagine thousand more flag settings, but who knows, which are senseful and is going to test them. Static linkage in contrast isn't that fancy. My summary: A configure option --static is more user friendly; it is more likely to be tested and corrected, if it doesn't work. last question: To who should I send a bug report? (I think, that if the gentoo distribution decides, that they do not want to support static linkage, then I should still be able to link it manually without getting errors. I think that the least thing to expect is, that everything that mc needs (to link statically), should be checked by the configure script, and be reported by an meaningful error message!)
-- Regards, Pavel Roskin
regards, -- Andreas
Attachment:
config.log
Description: Text Data
Attachment:
make.log
Description: Text Data