GCC & DeskLib

Moderator: Patrick

Benutzeravatar
Patrick
Moderator
Beiträge: 622
Registriert: 01 Mär 2005, 21:54
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Patrick »

Also die !DeskLib 2.30 selbst habe ich nicht kompiliert, sondern die fertigen Binaries benutzt. Mit diesen haben ich aber die Examples aus !DeskLib 2.60, unter anderem auch das !IncDec, erfolgreich kompilieren können. Und dabei gab es nochnichteinmal Wahrnungen oder Fehler .... das ging einfach so.

Vielleicht ist irgendwas in unserem GCC Setup noch rein 26 bittig, was dann zu Problemen beim Verlinken mit der 32bit !DeskLib führt. Kann das sein? Bin nur am vermuten jetzt .......
maus
RISCOS Neuling
Beiträge: 49
Registriert: 02 Mär 2005, 19:43

Beitrag von maus »

Ich vermute mal eine Inkomatibilitaet zwischen der verwendeten GCC-Version und der beim Erzeugen von DeskLib verwendeten GCC-Version. Dazu koennen die GCC-Entwickler sicher mehr sagen als ich -- ich erinnere mich nur, dass es mehr als einmal Modifikationen gab, die ein vollstaendiges Neukompilieren vieler Bibliotheken erforderte. Es sieht so aus, als ob das beim kommenden GCC 4.0 ebenfalls so sein wird: die Fliesskommabefehle fuer ARM werden dann wahrscheinlich gar nicht mehr verwendet, sondern gleich in Soft-Float-Aufrufe umgesetzt (wer hat schon einen FPA an Bord ...).

Fazit: zum Fensterln in C eignen sich bewaehrte alte GCC- und Desklib-Installationen im Moment offenbar besser als bleeding edge-Downloads.
Artchi
RISCOS Power User
Beiträge: 187
Registriert: 03 Apr 2005, 19:04

Beitrag von Artchi »

Da im Standard von C und C++ die Binaries von Libraries nicht spezifiziert sind, darf man sich nie auf Binaries verlassen, wenn diese nicht speziell für einen bestimmten Compiler vorliegen. Selbst innerhalb von Compiler-Versionen ist die Kompatibilität somit nicht gewährleistet.

Unter Windows gibts z.B. viele Compiler (GCC, VC++, Intel, CodeWarrior usw.), und Libraries werden dort immer speziell für jeden Compiler und Compilerversion angeboten. Für Libs die im Source frei sind, gibts immer für jeden Compiler eigene Buildscripts.

Es ist also nicht verwunderlich das Carlos hier auf Schwierigkeiten stößt, wenn er nicht die genaue Compilerversion für die fertigen Binary-Libs benutzt.
Benutzeravatar
Patrick
Moderator
Beiträge: 622
Registriert: 01 Mär 2005, 21:54
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Patrick »

Eben habe ich soetwas wie einen kleinen Erfolg verbuchen können! Habe folgendes gemacht:
1. Desklib 2.30 ausgepackt
2. Desklib 2.60 ausgepackt, und über die 2.3 gezogen
3. Den DeskLib Mischmasch kompiliert, mit dem Obey Scripts,
die aus der 2.3'er Version kommen.
4. Das so entstandene DeskLib Binary zum kompilieren der
Beispiel-Programme aus der DeskLib 2.6 benutzt. (!incDec)

und: es hat geklappt!
Scheinbar ist das Sourcen-Zip-File der DeskLib 2.6 etwas schludrig zusammengestellt worden.

Edit:
Habe noch vergessen zu erwähnen, dass ich die DeskLib mit dem aktuellsten GCC gebaut habe.
cms
RISCOS Legende
Beiträge: 683
Registriert: 02 Mär 2005, 16:51

Beitrag von cms »

Das werde ich später, wenn der Risc PC etwas näher ist ausprobieren. Wenn das funktioniert und dann noch 26/32 bitneutral ist, bin ich schon mal ein Schritt weiter - ähhh was wollte ich eigentlich?

@Archi: Ich stimme Dir zu, aber DeskLib liegt im Quellkode vor und soll laut Doku nicht nur mit dem Norcroft Kompiler sondern auch mit dem GCC zusammenarbeiten - wenn man das Teil kompiliert bekommt.

@maus: Es auf ale Fälle zu erwarten, daß bei GCC 4 alle Libraries neu kompiliert werden müssen. Schliesslich soll dann ja Programme im ELF Format erzeugt werden, die dann irgendwie noch RISC OS schmackhaft gemacht werden müssen. http://www.drobe.co.uk/riscos/artifact1298.html
Ein Staat, in dem alle verdächtig sind, ist selbst verdächtig

www.arcsite.de
www.risc-os.de
Benutzeravatar
Patrick
Moderator
Beiträge: 622
Registriert: 01 Mär 2005, 21:54
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Patrick »

@Carlos:
Heute morgen wollte ich dazu nochmal eine etwas detailiertere Anleitung schreiben, und habe den ganzen Vorgang nochmal durchgeführt. Leider hat es diesmal nicht ganz so gut funktinoiert. Also muss ich bei meinem ersten Versuch noch irgendwas anderes gemacht haben, damit es ging. Versuche das jetzt noch herauszubekommen.
Benutzeravatar
Patrick
Moderator
Beiträge: 622
Registriert: 01 Mär 2005, 21:54
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Patrick »

So, habe wieder einen neuen Lösungsansatz, den ich allerdings erst heute Abend selbst versuchen kann.

Beim Kompilieren mit dem in DeskLib 2.6 mitgelieferten MakeFile gibt es ja massenhaft Fehler. Kompiliert man aber die ganzen 'Libraries' von DeskLib einzeln mit einem einfachen 'gcc -c ...... ' Aufruf, funktioniert es. So habe ich mir Heute morgen bereits die 'BackTrace' und 'Clear' Library gebaut. Wenn ich das mit allen anderen Libs auch so machen würde, und dann am Schluss alles verlinke, müsste ich eine fertige DeskLib bekommen.

Das MakeFile in !DlSources sollte das zwar alles selbst machen können, aber irgendwie gibt es da ein Problem.

Werde mir das, wie gesagt, später mal anschauen, aber da ich nicht so der MakeFile Experte bin, muss ich erstmal schauen, dass ich dieses Zeugs verstehe.
Benutzeravatar
Patrick
Moderator
Beiträge: 622
Registriert: 01 Mär 2005, 21:54
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Patrick »

So, diesmal hat es WIRKLICH geklappt.
Der ganze Vorgang ist zwar noch ziemlich mühsam, aber immerhin kommt jetzt am Ende eine brauchbare Library raus. Ich werde mal versuchen eine kurze Anleitung zu schreiben, wer nicht solange warten will, und die DeskLib auch mal selbst kompilieren will, schreibt mir am besten mal eine Mail, dann schick euch mein !DLSources ....

Wenn ihr keine Lust zum selber kompileren habt, schick ich euch natürlich auch nur das fertige Binary ....


cms
RISCOS Legende
Beiträge: 683
Registriert: 02 Mär 2005, 16:51

Beitrag von cms »

Danke Patrick! Inzwischen habe sogar ich es hinbekommen mit Deiner Hilfe DeskLib mit gcc zum Laufen zu bekommen. Ich mußte zwar in jeden einzelnen Library-Verzeichnis das "*make all" absetzen, aber nun habe ich DeskLib zusammen mit dem gcc am Laufen.

Worüber ich mir aber vorher keine Gedanken gemacht habe ist, daß DeskLib nicht mit der UnixLib zusammenarbeitet weil es mit der CLib bebaut wird. Aber vermutlich wird man es hinbekommen DeskLib mit der UnixLib zu bauen. Das werde ich sicher später einmal ausprobieren. Eine Assemblerfunktion aus DeskLib habe ich zumindestens eben in einen UnixLib C Programm einbinden können.
Ein Staat, in dem alle verdächtig sind, ist selbst verdächtig

www.arcsite.de
www.risc-os.de
Benutzeravatar
Patrick
Moderator
Beiträge: 622
Registriert: 01 Mär 2005, 21:54
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Patrick »

Mittlerweile gibt es ja auch eine neue Version von der !DeskLib, 2.70 glaube ich. Hat damit schonmal jemand von euch herumexperimentiert? Bin selbst noch nicht dazu gekommen ....
Antworten