configure findet libs nicht (compilieren vom source)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

configure findet libs nicht (compilieren vom source)

Beitrag von ZzLeCzZ » 16.06.2005 13:15:07

hi,
ich moechte ein prog vom source compilieren. Da ich nur ein "normaler" user bin muss ich alles in mein homeverzeichnis installieren (configure --prefix=/home) . ich habe jetzt schon ein paar libs die das prog braucht in mein homeverzeichnis installiert. Wenn ich jetzt aber das program compilieren will das diese libs braucht meckert configure (--prefix=/home) das er die libs nicht findet. Wie bring ich configure jetzt bei wo die libs liegen?
thx

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 16.06.2005 13:36:11

So generell kann das nicht beantwortet werden, zumeist wird aber eine Option wie "-with-<paket>-prefix" verwendet, über welche der pfad zu anderen Paketen angegeben werden kann.
Wenn das nicht funktioniert, poste einmal die configure.ac bzw. configure.in (auf nopaste)

Gruß
gms

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 16.06.2005 14:03:23

hat nicht geklappt.

makefile.am:

http://nopaste.debianforum.de/419

makefile.in:

http://nopaste.debianforum.de/420

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 16.06.2005 14:25:09

die makefile templates nützen mir leider nichts. Das "configure" script wurde mit ziemlicher Sicherheit mit "autoconf" erzeugt. Als Input für "autoconf" wird normalerweise eine Datei "configure.ac" bzw "configure.in" verwendet. Suche einmal danach in deinem Sourceverzeichnis:

Code: Alles auswählen

find -name "config*"
Zur Not würde auch das "configure" - Script gehen. Das wird aber wahrscheinlich schrecklich unleserlich sein. (Ist generierter M4 Code).

Ja und die entsprechende Fehlermeldung wäre auch nicht schlecht.

Gruß
gms

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Re: configure findet libs nicht (compilieren vom source)

Beitrag von deadeye » 16.06.2005 14:40:06

Hi,
ZzLeCzZ hat geschrieben:hi,
ich moechte ein prog vom source compilieren. Da ich nur ein "normaler" user bin muss ich alles in mein homeverzeichnis installieren (configure --prefix=/home) .
mit dem Präfix /home dürftest Du aber auch nicht glücklich werden, weil normale User auch nicht in /home schreiben dürfen, nur in /home/username.

Wegen der Libs: Du brauchst dann natürlich auch die Headerfiles zu den Libs, die meistens unter inlcude/ liegen und mit .h enden. Und deren Pfade kannst Du in der Regel dem configure-Script mit übergeben.

Code: Alles auswählen

./configure --help
sollte Dir weiterhelfen.

Gruß
deadeye

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 16.06.2005 14:49:21

oh sorry hab mich vertan hier ist das configure.in:
http://nopaste.debianforum.de/421

@deadeye: ja das mit dem home war nur zur verdeutlichung da mein home verzeichnis so einen langen namen hat... die optionen die ich bei configure -h angezeigt werden haben mir nicht weiter geholfen...
hier die ausgabe:
http://nopaste.debianforum.de/422

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 16.06.2005 14:54:02

Die Fehlermeldung fehlt noch. Bei den folgenden Paketen sollte jedoch die Option "--with-<paket>-prefix" helfen:

--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
--without-libintl-prefix don't search for libintl in includedir and libdir

Gruß
gms

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 16.06.2005 15:13:41

hier die fehler meldung:

Code: Alles auswählen

checking for fxfindfox in -lFOX-1.4... no
configure: error: "libFOX-1.4 not found"
hier meine eingabe:

Code: Alles auswählen

./configure --with-libintl-prefix=/home/name --with-libiconv-prefix=/home/name  --without-libintl-prefix --prefix=/home/name
hat aber nicht funktioniert.
in meinem home/name/lib verzeichniss befindet sich ein libFOX-1.4.so !

Benutzeravatar
deadeye
Beiträge: 561
Registriert: 14.04.2004 15:32:18
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ukio, rechts hinterm Feld
Kontaktdaten:

Beitrag von deadeye » 16.06.2005 15:29:40

und wenn Du einfach mal

Code: Alles auswählen

--with-fox-prefix=/home/name
oder

Code: Alles auswählen

--with-FOX-prefix=/home/name
noch anhägst. Keine Ahnung obs hilft, aber Probieren wird nich schaden.

Oder schreib einfach ein "dnl" in die Zeile 29 in configure.in, das ist zwar etwas russisch, aber dann könnte configure schonmal durchlaufen, und Dir die Makefiles erzeugen.
Diese müsstest Du dann nötigenfalls nochmal bearbeiten, damit beim Linken auch die Lib, die ja vorhanden ist, nur nicht gefunden wird, mit benutzt wird.
Oder viel einfacher: einfach mal so configure aufrufen:

Code: Alles auswählen

LDFLAGS=-L/home/name/lib ./configure [args]
Das ist die saubere Lösung, wenn sie funzt.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 16.06.2005 15:29:44

das sind die relevanten AC - Macros

Code: Alles auswählen

AC_CHECK_LIB(FOX-1.4,fxfindfox,,AC_MSG_ERROR("libFOX-1.4 not found"))
AC_CHECK_HEADERS(fox-1.4/fx.h,,AC_MSG_ERROR("fox-1.4/fx.h not found"))
die Libraries und Header werden nicht über einen Prefix gesucht, daher sollte folgendes funktionieren:

Code: Alles auswählen

export LFLAGS=-L/home/name/lib
export CFLAGS=-I/home/name/include
./configure --with-libintl-prefix=/home/name --with-libiconv-prefix=/home/name  --without-libintl-prefix --prefix=/home/name
Gruß
gms

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 16.06.2005 16:16:13

ok thx so hat es funktioniert :-)

ZzLeCzZ
Beiträge: 245
Registriert: 15.12.2003 19:34:00

Beitrag von ZzLeCzZ » 16.06.2005 16:25:00

so jetzt hab ich aber das problem das das programm meine libs nicht findet..
was muss ich exportieren damit der die libs findet? oder wo muss ich das reinschreiben?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 16.06.2005 16:32:07

schöne Lösung:
neu compilieren und in LFLAGS diese zusätzliche Option angeben:

Code: Alles auswählen

export LFLAGS="-L/home/name/lib  -Wl,-rpath,/home/name/lib:/usr/lib:/lib"

oder einfache Lösung

Code: Alles auswählen

export LD_LIBRARY_PATH=/home/name/lib:/usr/lib:/lib
Gruß
gms

Antworten