• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

make bricht ab

The_Eye

Member
Hi,

Da rhythmbox unter SuSE 9.3 auch nach der Installation der Mediapakete sich weigert mp3s zu spielen. Wollte ich es mir einfach selbst kompilieren.

./configure läuft auch sauber durch

make aber bricht mit der Meldung ab:


-I/opt/gnome/include/glib-2.0 -I/opt/gnome/lib/glib-2.0/include -I/opt/gnome/include/gconf/2 -I/opt/gnome/include/orbit-2.0 -I/usr/X11R6/include -g -O2 -MT rb-file-helpers.lo -MD -MP -MF .deps/rb-file-helpers.Tpo -c rb-file-helpers.c -fPIC -DPIC -o .libs/rb-file-helpers.o
In file included from /opt/gnome/include/libgnome-2.0/libgnome/gnome-init.h:30,
from rb-file-helpers.c:28:
/opt/gnome/include/libgnome-2.0/libgnome/gnome-program.h:35:18: popt.h: No such file or directory
In file included from /opt/gnome/include/libgnome-2.0/libgnome/gnome-init.h:30,
from rb-file-helpers.c:28:
/opt/gnome/include/libgnome-2.0/libgnome/gnome-program.h:195: error: syntax error before "gnome_program_preinit"
/opt/gnome/include/libgnome-2.0/libgnome/gnome-program.h:198: warning: data definition has no type or storage class
make[3]: *** [rb-file-helpers.lo] Fehler 1
make[3]: Leaving directory `/home/the_eye/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3/lib'
make[2]: *** [all] Fehler 2
make[2]: Leaving directory `/home/the_eye/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3/lib'
make[1]: *** [all-recursive] Fehler 1
make[1]: Leaving directory `/home/the_eye/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3'
make: *** [all] Fehler 2
linux:/home/the_eye/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3 #


Ein mir vollkommen unbekanntes Problem. Weiß jemand einen Rat?

Gruß
 
OP
T

The_Eye

Member
DANKE!!!

Wußt` ichs doch, dass es da irgendwo stehen muss, aber dieses Kürzel "popt.h" hat mich nicht auf die übliche Idee verfallen lassen, DANACH unter YAST zu suchen.

Also, noch das eine oder andere nach installiert, google hat mich gelehrt, dass sich die libesd unter esound zu finden ist.

Nur einen Fehler gibt es noch, der mich ratlos läßt. Nicht mehr bei MAKE. Sondern bei MAKE INSTALL


/usr/bin/install -c -m 644 rhythmbox.png /usr/local/share/pixmaps/rhythmbox.png
/bin/sh ../mkinstalldirs /usr/local/share/application-registry
mkdir -p -- /usr/local/share/application-registry
/usr/bin/install -c -m 644 rhythmbox.applications /usr/local/share/application-registry/rhythmbox.a pplications
GCONF_CONFIG_SOURCE= --makefile-install-rule ./rhythmbox.schemas;
/bin/sh: --makefile-install-rule: command not found
make[3]: *** [install-data-local] Fehler 127
make[3]: Leaving directory `/home/.Trash-0/files/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3/data'
make[2]: *** [install-am] Fehler 2
make[2]: Leaving directory `/home/.Trash-0/files/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3/data'
make[1]: *** [install-recursive] Fehler 1
make[1]: Leaving directory `/home/.Trash-0/files/rhythmbox-0.8.3.tar.gz_FILES/rhythmbox-0.8.3/data'
make: *** [install-recursive] Fehler 1


Auf der Konsole wird gemeldet:

Rhythmbox-Message: Failed to register the shell: (null)
This probably means that you installed Rhythmbox in a different prefix than bonobo-activation; this warning is harmless, but IPC will not work.

Hängen diese Meldungen zusammen und wie kann ich den Fehler beheben? rhythmbox startet und kann auch Geräusche erzeugen ;-)

Noch mal: DANKE!!!
 

oc2pus

Ultimate Guru
Helden des Alltags und selber compilieren ;)

also du solltest immer zuerst ./configure --help aufrufen um zu sehen welche Optionen man dem configure mitgeben kann.
Dann solltest du
./configure --prefix=/usr oder
./configure --prefix=/opt/gnome oder
./configure --prefix=/opt/kde3
verwenden, damit die Programme an der "richtigen" Stelle in deiner SuSE landen.

Sonst wird per defauilt in /usr/local/bin bzw /usr/local/lib installiert und das kann "nette" Seiteneffekte haben, wenn nämlich die Programme und Bibliotheken in /usr/bin bzw /usr/lib noch in der alten Version vorhanden sind. Dann gewinnt das Programm welches im PATH vorne steht.

SuSE ist RPM basiert, d.h. du solltest immer ein RPM verwenden sonst nutzt die YaST und deine RPM-Datenbank gar nichts.
Du kannst selber compilierte Programme mit checkinstall in RPMs umwandeln.

Besser finde ich allerdings wenn du dir das src.rpm von der "alten" Version besorgst, mit rpm -i xxx.src.rpm installierst, danach das SPEC-File in /usr/src/packages/SPECS anpasst an die neue Versionsnummer und den neuen Tar-Ball (tar.gz) nach /usr/src/packages/SOURCES kopierst.
Danach erstellst du dein RPM mit /usr/lib/rpm/rpmb -bb /usr/src/packages/SPECS/xxx.spec.
Das Ergebnis steht dann in /usr/src/packages/RPMS/i586/xxx.i586.rpm und kann mit rpm -Uhv xxx.i586.rpm installiert werden.

So einfach kann das sein ;)
 
OP
T

The_Eye

Member
Ohne die Helden des Alltages wäre es doch aber auch nur halb so schön ;-)

Danke, jetzt läuft alles sauber durch!!!
 

scg

Hacker
Mehr Info zu checkinstall gibts hier:

http://www.tldp.org/linuxfocus/Deutsch/December2004/article360.shtml
 

Fe

Newbie
Was genau macht eigentlich make? Ich werde aus der man nicht so ganz schlau. Kann mir jemand nen Link schicken, wo das mal vernünftig erklärt ist? Forensuche hat auch nichts gebracht.
 

scg

Hacker
make ist ein Programm, das i.d.R. benutzt wird, um Programme zu übersetzen und zusammen zuzubauen.

Meistens besteht ein lauffähiges Programm (sagen wir mal in C geschrieben) aus mehreren C-Quellcodes, oft auch noch aus einigen Headerfiles.

Man muss sich mal den Vorgang von so einer Programm-Übersetzung/-Montage näher angucken.

Dabei fallen Abhängigkeiten auf:

Das fertige Produkt ist ein lauffähiges Binary im ELF-Format.

Dieses ist gelinkt aus mehreren Object-Files. Diese Object-Files sind schon Binärcode, sie resultieren aus kompilierten C-Files.

Die C-Files sind evtl. untereinander abhängig, meistens aber auf jeden Fall von Header-Files.

Also ergibt sich eine Reihenfolge, die eingehalten werden muß.

Man könnte nun einfach den Compiler anwerfen, alle C-Files übersetzen und die entstandenen Object-Files linken um das lauffähige Programm zu bekommen.

Aber die meisten Programme sind in der Zusammensetzung komplex, immer alles zu bauen würde zu viel Zeit beanspruchen.

Daher beschreibt man die Zusammenhänge in einem MAKEFILE und das Programm make baut nur diejenigen Teile, die auch seit dem letzen Build verändert worden sind. Dabei berücksichtigt es die Abhängigkeiten.

Die Syntax eines MAKEFILE ist nicht immer trivial, besondere Beachtung verdient die Tatsache, daß es WICHTIG ist, daß manchen Einrückungen durch einen TabStop erfolgen müssen. Ein Space davor läßt den Make-Vorgang scheitern, ein Blick in das MAKEFILE zeigt nicht unbedingt sofort, wo der Fehler liegt.

Eine weitere Schwierigkeit liegt in den sog. impliziten Regeln von make. Das heißt, dass make von sich aus gewisse Dinge tut oder voraussetzt, auch wenn diese nicht im MAKEFILE stehen.

Eine Alternative zu make ist ant von der Apache-Group. es ist XML-basiert und erfüllt einen vergleichbaren Zweck.

So, ich hol mir jetzt ne Flasche Bier und dann such ich noch nen Link auf ne einfache Doku raus.

[edit] Guck mal hier, ich nehme es in die "Nützlichen Links" auf...
http://www.linuxfocus.org/Deutsch/May2001/article181.shtml
 
Oben