Forum: PC-Programmierung Source-Files: Wo sind Abhängige Packete gelistet?


von Peter (Gast)


Lesenswert?

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?

von Peter II (Gast)


Lesenswert?

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?

von Sven B. (scummos)


Lesenswert?

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(...)).

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

Woher nimmt dann LinuxFromScratch die Abhängigkeiten? Irgendwo müssen 
diese doch aufgelistet sein?

von Peter II (Gast)


Lesenswert?

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.

von Sven B. (scummos)


Lesenswert?

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=)

: Bearbeitet durch User
von Rolf Magnus (Gast)


Lesenswert?

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.

von Εrnst B. (ernst)


Lesenswert?

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.

von Sven B. (scummos)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

Sven B. schrieb:
> gcc ist ein Compiler und autoconf ein Build-System.

Ja, und zwar das, mit dem gcc gebaut wird.

von Sven B. (scummos)


Lesenswert?

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.

von Georg (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.