Es geht mir darum aufgrund der Source-Files herauszufinden, von welchen
Softwarepacketen z.b. der GCC-Compiler abhängt.
LinuxFromSratch liefert die Abhängigkeiten für GCC:
"Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, GCC, Gettext,
Glibc, GMP, Grep, M4, Make, MPC, MPFR, Patch, Perl, Sed, Tar, and
Texinfo"
(http://www.linuxfromscratch.org/lfs/view/development/appendices/dependencies.html,siehe
unter "GCC" )
Kann ich auch alleine durch den gegebenen Sourcecode von
ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-4.9.2/
herausfinden welche Software vor der eigentlichen Installation von GCC
installiert sein muss?
Wo werde ich in den Source-Files fündig?
Peter schrieb:> Wo werde ich in den Source-Files fündig?
gar nicht, zumindest nicht in den Source-Files. Es können ja vom
Makefile auch Scripte ausgeführt werden und dort werden dann andere
Programm gebraucht. Auch das make selber wird gebraucht, obwohl es
selber in den quelle nicht zu finden ist.
Oder zählt für die das Makefile als source-file?
Kannst du nicht rausfinden, zumindest nicht ohne weiteres. Du kannst nur
so Dinge tun wie schauen, gegen welche Bibliotheken gelinkt wird und
welches Pak(!)et die zur Verfügung stellt.
Build-Systeme wie CMake können dir auch oft sagen, was genau du
brauchst, bzw. da ist es oft sehr explizit aufgelistet
(find_package(...)).
Peter schrieb:> Woher nimmt dann LinuxFromScratch die Abhängigkeiten? Irgendwo müssen> diese doch aufgelistet sein?
Du kannst einfach die Quellen landen und einfach versuchen es zu bauen.
und jedes Mal wenn etwas fehlt schreibst du es auf - schon hast du die
liste.
Peter schrieb:> Woher nimmt dann LinuxFromScratch die Abhängigkeiten? Irgendwo müssen> diese doch aufgelistet sein?
Die tippt für die Distributionen in der Regel jemand von Hand in eine
Paket-Konfigurationsdatei. Siehe zum Beispiel aur.archlinux.org, etwa
https://aur.archlinux.org/packages/ka/kate-git/PKGBUILD (depends=,
makedepends=)
Sven B. schrieb:> Build-Systeme wie CMake können dir auch oft sagen, was genau du> brauchst, bzw. da ist es oft sehr explizit aufgelistet> (find_package(...)).
Bei gcc kommt meines Wissens autoconf zum Einsatz. Das meldet beim
configure-Aufruf auch einen Fehler, wenn irgendwas fehlt.
Abgesehen von dem ganzen gibt es aber auch unterschiedliche Kategorien
von Abhängigkeiten. Manche Programme kann man auch bauen, wenn bestimmte
Sachen nicht verfügbar sind. Dann fehlt halt eine entsprechende
Teilfunktionalität des Programms.
Oder es kann auch mehrere unterschiedliche Alternativen geben, von denen
das Build-System aber nur eine vorfinden muss. Welche das ist, hängt
dann ggf. vom System ab. So kann ein Audio-Player z.B. unter Linux ALSA
zur Tonausgabe benutzen, unter Windows DirectX, unter FreeBSD OSS oder
alternativ PulseAudio auf allen diesen Systemen.
Peter schrieb:> Woher nimmt dann LinuxFromScratch die Abhängigkeiten? Irgendwo müssen> diese doch aufgelistet sein?
du könntest z.B. bei Gentoo in die Ebuilds gucken.
da steht sowas drinnen, vor allem auch, welche Abhängigkeiten optional
sind.
z.B. (passend zum Forum) avrdude:
virtual/libusb:0
ftdi? ( dev-embedded/libftdi )
ncurses? ( sys-libs/ncurses )
readline? ( sys-libs/readline )
bedeutet: libusb brauchst du immer.
Wenn das Feature "ftdi" gewünscht ist (use-flag), dann bitte die
libftdi,
ncurses/readline ähnlich.
Bei einer Binär-Distribution stellt sich diese Frage nicht, da hat der
zuständige Maintainer schon sinnvolle Einstellungen gewählt, und dadurch
die Abhängigkeiten vorgegeben.
Rolf Magnus schrieb:> Sven B. schrieb:>> Build-Systeme wie CMake können dir auch oft sagen, was genau du>> brauchst, bzw. da ist es oft sehr explizit aufgelistet>> (find_package(...)).>> Bei gcc kommt meines Wissens autoconf zum Einsatz. Das meldet beim> configure-Aufruf auch einen Fehler, wenn irgendwas fehlt.
gcc ist ein Compiler und autoconf ein Build-System. Das kannst du
beliebig kombinieren. gcc hat mit autoconf nix zu tun. Außerdem ist
autoconf kacke.
Rolf Magnus schrieb:> Sven B. schrieb:>> gcc ist ein Compiler und autoconf ein Build-System.>> Ja, und zwar das, mit dem gcc gebaut wird.
Ach so. Sorry, da hab ich gar nicht kapiert was du sagen wolltest.
Peter schrieb:> von welchen> Softwarepacketen z.b. der GCC-Compiler abhängt.
Das ist eine höchst ungenaue Frage: Pakete, die man braucht um den ggc
selbst zu compilieren? Pakete, die vorhanden sein müssen, damit der gcc
läuft? Pakete, die bestimmte Funktionen zur Verfügung stellen, aber
nicht unbedingt vorhanden sein müssen?
Die verschiedenen Abhängigkeiten gelten auch für jede andere Software.
U.a. kann sich der Programmierer entscheiden, ob eine bestimmte DLL
vorausgesetzt wird, so dass das Programm ohne garnicht erst startet,
oder ob er nur bei Bedarf eine Fehlermeldung bringt, dass die Funktion
XY nicht verfügbar ist weil...
Dazu kommt, dass eben libraries bzw. DLLs verlangt werden und nicht
Pakete - da führt wohl kein Weg an der Fleissarbeit vorbei, die Liste
manuell zu erstellen. Man kann zwar aus einem Paket auslesen, was drin
ist, aber nicht von einer library, in welchem Paket sie steckt.
Georg