WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Libc5 Kompilierproblem (http://www.wcm.at/forum/showthread.php?t=68129)

MasterX 29.08.2002 16:07

Libc5 Kompilierproblem
 
Ich benutze Manrake Linux 8.1 und hab mir ein kleines Programmchen in C gschrieben das auch ohne Probleme funktioniert.

Wollte das Programm nun auch für ein älteres Linux kompilieren (läuft auf meinem Router) und hab dazu die Libc5 eingebunden (hab eine Seite gefunden wo die entsprechenden RPMs waren und dabei stand daß man nach der Installation nur statt gcc gcc5 aufrufen muß).

Aber wenn ich nun das Programm kompilieren will, kommt folgende Fehlermeldung :
"gcc: installation problem, cannot exec `cpp0': Datei oder Verzeichnis nicht gefunden
gcc: file path prefix `/usr/lib/gcc-lib/i486-linux-libc5/2.7.2.1/2.96/' never used"

Da ich mich mit Linux-Programmierung noch nicht lange beschäftige sagt mir das net viel ... eigentlich gar nix ;) cpp0 dürfte ein Programm sein .. hab ich denk ich shcon mal in Ordner vom gcc gsehn ... wieso er das nicht findet .. keine Ahnung ... Und was es mit dem file path prefix auf sich hat kann ich mir auch nicht erklären.
Der Pfad ..../2.96/ wird im übrigen von mir nirgends aufgerufen (gcc5 ist nur ein Script daß den normalen gcc mit den Verweisen auf die libc5-Libraries aufruft; die Pfade stimmen aber .. hab ich schon kontrolliert)

Vielleicht kann mir da ja wer weiterhelfen.

Grüsse, MasterX

MasterX 01.09.2002 12:00

So, nach ein paar Tagen rumprobiern hab ich immer noch keine Lösung gefunden.
Mandrake hab ich inzwischen aufgegeben; keine Ahnung wieso es da net hinhaut.

Hab dann in der fli4l-Newsgroup eine Link zu einem VMWare-Image von Suse 5.3 gefunden. Diese 78 MB und 3 Stunden waren für mein ISDN gerade noch akzeptabel (+ ca 15 MB für die Trial-Version von VMWare).
Bei dieser fehlten dann aber leider ein paar benötigte Header-Files.

Nachdem ich nun mit VMWare auf den Geschmack gekommen war, hab ich einfach alle Linuxe die ich so von diversen Heft-CDs daheim hatte, ausprobiert (aus dem Jahre 99 aufwärts).
Bei der einen fehlten wieder Header-Dateien, bei der nächsten brach gcc selber mit einer Fehlermeldung ab, bei einer anderen war wiederum eine ältere Version als libc5 installiert, die ebenfalls keine Binary erzeugte die auf dem Router funktioniert usw.

Hab auch schon einige Anleitungen für die Installation von libc5 gefunden, doch jede für eine andere Distribution und Versionsnummer .... und keine funktioniert bei den mir zur verfügung stehenden Versionen. Entweder fehlten wie gesagt Headers oder ein ganzen Verzeichnis war nicht vorhanden .. irgendwas war immer ....

Wo ist die vielgelobte Flexibilität geblieben ??? Oder ist bei Linux keine Auf/Abwärtskombatibiltät vorgesehen ?? Ich will doch nur ein 50 Zeilen Programm für ein älteres Linux kompilieren ... oder is das eine sooo abwegige Aufgabenstellung ???

Eigentlich dachte ich schon daß Linux so weit gereift sei um ein Anwenderbetriebssystem zu sein, aber je mehr ich mich jetzt damit beschäftigt habe, umso mehr bin ich zum Schluss gekommen daß Linux nachwievor etwas für Leute mit VIIIEEEL Zeit ist ;)
Klar, der Fehler kann auch der User (also ich) sein, aber nach 3 bis 4 Tagen könnte man doch erwarten, daß irgendwas klappt ...

Und die Moral von der Geschicht:
Hat zufällig wer eine Suse 5.3 daheim die er mir kopieren und zuschicken könnte ?! :rolleyes:

Achtung: Dieser Text soll keine direkte Kritik an Linux sondern eher eine frustabbauende Maßnahme sein :D

Lotussteve 01.09.2002 16:34

Zitat:

Original geschrieben von MasterX
Wo ist die vielgelobte Flexibilität geblieben ??? Oder ist bei Linux keine Auf/Abwärtskombatibiltät vorgesehen ??

Eigentlich dachte ich schon daß Linux so weit gereift sei um ein Anwenderbetriebssystem zu sein, aber je mehr ich mich jetzt damit beschäftigt habe, umso mehr bin ich zum Schluss gekommen daß Linux nachwievor etwas für Leute mit VIIIEEEL Zeit ist ;)


Achtung: Dieser Text soll keine direkte Kritik an Linux sondern eher eine frustabbauende Maßnahme sein :D

Hallo!

ad 1.) Linux ist der Kernel, sonst nix. Und meine Debian GNU/Linuxdistribution hat die libc5 und sogar ältere gcc und den egcc falls du die brauchst. Auf Wunsch (mailto: help@cargal.org?Subject=DebianISO ) sende ich dir gerne die 3 oder 7 CD zu.

ad 2.) Es ist ein sehr gutes Anwenderbetriebssystem, was du machst ist entwickeln und dafür ist GNU/Linux schon viel länger geeignet als als Desktopsystem. Und nein, man braucht nicht viel Zeit, ein System zu installieren dauert mit $richtiger_Distribution 30 Minuten, Customisation ähnlich und die Wartung bez. Sicherheit ist nicht der Rede wert.
P.S.: Linux ist nur der Kernel, der muss nicht anwenderfreundlich sein. Das ist die Aufgabe der Distributionen :)

ad 3.) Ich weiss, ich antworte trotzdem ;)


Ciao,

Debian GNU/Steve

artemisia 01.09.2002 17:56

sers masterX

kann es sein, daß du die libs und header falsch einbindest?

greetz
artemisia

MasterX 01.09.2002 18:13

@artemisia

Ja das kann schon daß ICH da was falsch mache, nur wie schon gesagt habe ich die Weiten des Google schon ziemlich durchsucht und auch Anleitungen gefunden wie man das macht ... ohne Erfolg.
Hab mich auch schon selber mit dem diversen Parametern von gcc gespielt was aber auch ohne Wirkung war (entweder bekam ich ne Fehlermeldung daß irgendwas nicht gefunden wurde, oder das Programm wurde doch nur wieder mit den Standardlibs kompiliert)
Das Programm selber funktioniert auf jeden Fall, da ich es ja mit "normalen" gcc-Aufruf ohne Probleme kompilieren kann, und es auf dem System auch läuft.

@Lotussteve

Wie schon erwähnt, kann es eh sein daß der Fehler der User is ;) , aber bisher hatte ich mich nur mit den grundlegenden Dingen von Linux beschäftigt (zumindest die, welche ICH für grundlegend halte). Und ich seh schon, ich muß noch viel lernen :)

Also das mit den CDs wär schon super, nur wärs mir halt lieber man könnte das vorher mal ausprobiern ob dort überhaupt ein "richtiges" Binary erzeugt wird. Am liebsten wär mir ich könnte dir das C-File schicken, dann könnt ich mal sichergehn daß es unter Debian so kompilierbar ist, daß es bei meinem Zielsystem läuft.
Vielleicht liegt der Fehler auch ganz wo anders, aber laut Fli4l Doku und Newsgroup soll man Suse 5.3 bzw libc5 benutzen.

An sich find ich das Programmieren und Linux wirklich sehr komfortabel; war erstaunt wie leicht man da einen LCD-Treiber für den Parallelport schreiben kann.

artemisia 01.09.2002 18:26

würdest du den quellcode posten?

ansonsten reden wir doch nur aneinander vorbei.

greetz
artemisia

Lotussteve 01.09.2002 18:27

Zitat:

Original geschrieben von MasterX
1.) Und ich seh schon, ich muß noch viel lernen :)

2.) Also das mit den CDs wär schon super,

3.) Am liebsten wär mir ich könnte dir das C-File schicken, dann könnt ich mal sichergehn daß es unter Debian so kompilierbar ist, daß es bei meinem Zielsystem läuft.

4.) An sich find ich das Programmieren und Linux wirklich sehr komfortabel; war erstaunt wie leicht man da einen LCD-Treiber für den Parallelport schreiben kann.

Hallo!

ad 1.) Das schöne an freier Software ist daß das Lernen nie aufhört.......sage ich,der ich gerade in der Firma sitze, www.lartc lese und versuche einen performanten Router zu bauen :)

ad 2.) Wie gesagt, der einzige Aufwand für dich wäre es, das Packerl an der Haustür entegenzunehmen ;)

ad 3.) Mhmmm,kann jetzt nicht schauen ob ich die benötigten Sachen installiert habe, vielleicht liest hier wer mit der ein passendes System hat? Zur Not kannst du es mir aber schicken, klar. (Mit README bitte ;) )

ad 4.) Auja, was wäre die Welt ohne VIM,freier Compiler und freie C-Bibliothek :)


Ciao,

Steve

MasterX 01.09.2002 19:24

Hab jetzt mal das C-File ins Net gestellt

http://members.aon.at/tbhome/data/cpanel_orig.c
http://members.aon.at/tbhome/data/cpanel2.c

"cpanel_orig.c" ist wie der Name schon sagt der Originalsource, auf den ich zu Testzwecken mal aufgebaut habe.
Aber an den Programmen selber scheiterts ja net, die lassen sich ja beide ohne Fehlermeldungen auf meinem "normalen" Mandrake kompilieren.

@Lotussteve

Richtig, wenn ich nicht ständig was neues lernen könnte, wär mir ja langweilig ;)
Oder wie könnte ich sonst jemanden erklären, daß ich mir einen Router (fli4l) aus alten PC-Teilen zusammengeschraubt und herumkonfiguriert habe, obwohl derzeit nur ein an den Switch angeschlossener PC überhaupt ins Internet geht .. reines Interesse :)

Das mitn Kombilieren hat eigentlich keine Eile; fallst mal zuviel Zeit übrig hast ..... ;)
Wenns dann funktioniern sollte, komm ich gern auf dein Angebot zurück !!

Grüsse, MasterX

artemisia 01.09.2002 19:34

wenn ich mir das anschaue, so scheint mir, du versuchst das prog ohne die entsprechenden lib anweisungen einzubinden.

greetz
artemisia

MasterX 01.09.2002 20:05

Naja, aber die Libs bzw Pfade dorthin kann ich soviel ich weiß eh über Parameter an gcc übergeben, oder nicht ?!.

Habs unter anderem auch mit dem Beispiel für RedHat probiert :
http://ecg.mit.edu/george/gcc5.html

artemisia 01.09.2002 20:24

noch einmal für mein verständnis:

wolltest du dein prog crosscompilieren oder warum hast du die libc5 eingebunden?

greetz
artemisia

Sloter 01.09.2002 20:28

Hm, immer die Sonderwünsche von der Programmierabteilung :)

Du schreibst von Fehlern beim Compilen und später das es doch klappt :confused:

Fli setzt auf Red Hat auf weshalb brauchst du da jetzt Suse.5.3... ich schau mal in den Keller ob da so eine alte Dose mit 5.3 herumsteht..

Sloter

MasterX 01.09.2002 20:34

@sloter

Die Fehler sind auf meine Versuche bezogen das ganze mit der libc5 zum laufen zu bekommen; siehe Posting ganz oben, wo ich es mit Mandrake versucht hab.
Wenn ich ganz normal mit "gcc cpanel2.c -o cpanel2" kompiliere krieg ich keine Fehlermeldung, und das Programm läuft anstandslos.

Hab mir auch schon gedacht daß Fli4l Auf RedHat aufsetzt, weil mir diese grünen "OK" beim Booten noch von einem alten RedHat bekannt sind (muß aber nix heißen :) )

Aber hier der Auszug aus der Fli4l-Doku:



Es wird die alte 5er libc verwendet, weil die neue 6er glibc das Doppelte an Platz benötigt und deshalb nicht mehr auf die Diskette passt.

Wieso eigentlich doppelt so groß?
Wer kann mir das erklären?
Ich versteh's nicht.
Bietet die 6er glibc das Doppelte an Funktionalität?
Oder ist sie doppelt so schnell?
Oder ist einfach nur alles doppelt vorhanden?
Oder sind die Programmierer doppelt so ... vorsichtig?
Oder machen die Compiler neuerdings doppelt so fetten Code?
Oder sind die Bytes nun doppelt so dick (16 Bit)?
Oder liegt die 6er glibc damit einfach nur im Trend?
Ich kapier's einfach nicht. doppel-plus-ungut :-(
Freue mich auf jede einleuchtende Erklärung!

Fazit: Wenn man Programme im ext2-Image einfügen/austauschen will, müssen diese mit der alten 5er libc gelinkt sein, sorry.

Es gibt da Auswege für Entwickler. Hier sind einige angedeutet:

1. SuSE 5.3 auf altem Rechner installieren: geht, aber nicht optimal

2. SuSE 5.3 unter VMWARE auf einem neueren Linux installieren: schon besser

3. SuSE 5.3 Filesystem von einem alten Rechner über das Netzwerk auf einen neueren Linux-Rechner kopieren, z.B. nach /usr/suse53. Verzeichnis /proc (und evtl. andere) dabei auslassen. Anschließend auf dem neueren Rechner mit dem Kommando "chroot" in der 5.3er Unmgebung arbeiten.

4. Development-Kit verwenden:

http://ecg.mit.edu/george/gcc5.html
Dort gibt es auch eine Anleitung, wie man libc-Programme unter RedHat compiliert (unter SuSe wohl ähnlich)
Ich persönlich arbeite wie in Punkt 3 beschrieben.

MasterX 01.09.2002 20:36

@artemisia

richtig, ich will auf meinem "normalen" linux ein Programm für meinen Router kompilieren, der allerdings libc5 benötigt.

artemisia 01.09.2002 20:51

du willst also crosscompilieren.

also, crosscompilieren ist schon etwas anspruchsvoller, vorallem wenn man solche krankheiten wie mandrake benutzt.
crosscompilieren bedeutet immer viel handarbeit.

eine frage noch: warum compilierst du das prog nicht direkt auf dem router? denn sinn deiner aktion ist mir bis jetzt noch im verborgen geblieben. .... aber vielleicht hab ich ja heute einen dunklen tag.


greetz
artemisia

MasterX 01.09.2002 21:09

... weil die Zielplattform ein Router mit einer 40MB Festplatte ist und das darauf installierte Linux eine abgespeckte "Routerversion" , die normal (ohne diverse OPT-Pakete) auf eine Diskette passt.
D.h. es sind nur die wirklich notwendigen Progrämmchen und Tools oben (standardmässig nichtmal ein Editor); mehr ist für einen Router normal auch nicht notwendig.

Grüsse, MasterX

Sloter 01.09.2002 21:11

@Arti

Fli4l läuft nur auf einer Diskette ohne Festplatte (Fix fertiger Router)
Da ist nix mit Compilen.......

<Wieso eigentlich doppelt so groß?
Es sind eine Menge an Funktionen hinzugekommen, vorallem für grafischen Schnick Schnack.

Was ist eigentlich wenn du es mit einem neuen System übersetzt?
Läßt es sich später nicht starten oder was tut sich?

Sloter

MasterX 01.09.2002 21:19

@sloter

Wenn ichs "normal" kompiliere (also mit der 6er glibc) kann ich das Programm am Router einfach nicht starten. Er meldet mir nur ein "cpanel: not found". (und das Programm is definitiv da .. vor allem da ich davor erst immer die Rechte setzen muß)

Sloter 01.09.2002 21:53

Morgen guck ich im Keller nach :)

Sloter


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag