Gibt es eigentlich einen....



  • ...plattform unabhängigen C++ Compiler? GCC gibt es in verschiedenen Versionen für Linux, Windows, etc. Aber soweit ich weiss, kann ich wenn ich ein Programm mit GCC für Windows compiliere es nicht auf Linux ausführen und umgekehrt.
    Trotzdem gibt es aber Programme die mit dem GCC programmiert wurden und auf Linux, Windows und den restlichen Plattformen funktionieren.

    Also frage ich mich 1) Wie geht das? und 2) Auf welcher Plattform wurden diese Programme wahrscheinlich programmiert?



  • Sag mal ein Programm das so funktioniert...



  • Trotzdem gibt es aber Programme die mit dem GCC programmiert wurden und auf Linux, Windows und den restlichen Plattformen funktionieren.

    Naja. Letztendlich müssen die Programme aber auch für jede Plattform seperat compiliert werden.



  • Es gibt mehrere Gründe, die das verhindern:

    1. verschiedene ABIs und Formate
    2. verschiedene C Librarys
    3. verschiedene Hardware (teilweise)

    Mit dotNET soll so was möglich sein, nur läuft dotNET eben nur auf Windows, was es im Endeffekt ja auch nicht bringt und den C++ Code, den man mit dotNET ausführen kann, der ist weiter vom Standard entfernt, als der MS C++ Compiler es ohnehin schon ist.



  • Original erstellt von K.M:
    **...plattform unabhängigen C++ Compiler? GCC gibt es in verschiedenen Versionen für Linux, Windows, etc. Aber soweit ich weiss, kann ich wenn ich ein Programm mit GCC für Windows compiliere es nicht auf Linux ausführen und umgekehrt.
    Trotzdem gibt es aber Programme die mit dem GCC programmiert wurden und auf Linux, Windows und den restlichen Plattformen funktionieren.

    Also frage ich mich 1) Wie geht das? und 2) Auf welcher Plattform wurden diese Programme wahrscheinlich programmiert?**

    beschäftige dich mal mit dem ansatz von C++

    der Trick ist der: jedes standard C++ programm ist plattformunabhängig. aber nicht wie es einem die Java leute immer verklickern: benötig eine eigene plattform ala JVM.

    ein c++ programm muss auf jeder plattform einmal übersetzt werden, sprich du kompilierst es für diese plattform neu. wenn du alles richtig gemacht hast, musst du nur das makefile aufrufen und alles ist paletti - wenn nicht, musst du die source an ein paar stellen verändern.

    echte plattformunabhänigkeit kann es nicht geben, da binarys auf auf unterschiedlichen plattformen unterschiedliche struktur haben. zB ELF versus PE



  • JAVA



  • [ Dieser Beitrag wurde am 09.02.2003 um 18:19 Uhr von K.M editiert. ]



  • Original erstellt von K.M:
    Na gut, vielleicht wurden diese Programme ja nicht mit dem GCC compliliert..

    vielleicht wurden diese programme in Java oder in einer script sprache geschrieben oder neu kompiliert

    sag mal welche



  • Zum Beispiel das Programm ist in C++ geschrieben und plattformunabhängig:

    http://freshmeat.net/projects/alarmmon/?topic_id=66%2C148%2C862%2C152

    Ob das mit dem GCC compiliert wurde ist eine andere Frage.

    [ Dieser Beitrag wurde am 09.02.2003 um 18:26 Uhr von K.M editiert. ]



  • Original erstellt von Shade Of Mine:
    **
    der Trick ist der: jedes standard C++ programm ist plattformunabhängig.**

    Was kann man denn für mit einem Standard-C++-Programm eigentlich machen? ...ziemlich wenig, oder?

    EDIT :

    ...und selbst bei einem Standard-C++-Programm kann es bei unterschiedlichen Platformen zu unterschiedlichen Ergebnissen kommen, wenn man nicht aufpaßt. ...wegen möglicherweise unterschiedlichen Größen der primitiven Datentypen.

    (OK! Wer sich genau an den Standard hält, der muss sein Programm entsprechend programmieren und kann das verhindern!)

    [ Dieser Beitrag wurde am 09.02.2003 um 18:32 Uhr von Gregor editiert. ]



  • ist doch egal welcher compiler, wobei ich stark auf gcc tippe.

    schau dir das projekt mal genauer an: es gibt keine binaries zum download - nur sourcen.

    jeder muss es für seine plattform selber compilieren.



  • Original erstellt von Gregor:
    Was kann man denn für mit einem Standard-C++-Programm eigentlich machen? ...ziemlich wenig, oder?

    sorry, aber langsam nervt es.
    willst du wieder anfangen für java zu predigen?? hier geht es ausnahmsweise einmal nur um c++ und kein java.

    was kann ich mit standard C++ machen: das backend schreiben. dann haut man schnell ne GUI drüber (wobei es für diese auch cross-plattform lösungen gibt)



  • Aha, so läuft das also. Ist mir ein bisschen peinlich.



  • lol 🙂



  • Original erstellt von Shade Of Mine:
    **sorry, aber langsam nervt es.
    willst du wieder anfangen für java zu predigen?? hier geht es ausnahmsweise einmal nur um c++ und kein java.
    **

    Bleib mal aufm Teppich! Ich habe kein Wort zu Java geagt! ...und werde auch nichts dazu sagen!

    ...auch beim Backend bist du bei C++ sehr eingeschränkt. Standard-C++ fehlt deutlich mehr als nur ne GUI!



  • Original erstellt von Gregor:
    **...und selbst bei einem Standard-C++-Programm kann es bei unterschiedlichen Platformen zu unterschiedlichen Ergebnissen kommen, wenn man nicht aufpaßt. ...wegen möglicherweise unterschiedlichen Größen der primitiven Datentypen.

    (OK! Wer sich genau an den Standard hält, der muss sein Programm entsprechend programmieren und kann das verhindern!)
    **

    nimm ne Bibliothek ala Qt oder ähnlichem und du kannst exakt das selbe wie Java an Plattformunabhänigkeit

    Mit der Ausnahme das programm auch auf plattformen ohne der Bibiliothek portierbar ist - was bei Java nicht der Fall ist.



  • Also mit Qt und anderen Libs wird das gemacht...

    [ Dieser Beitrag wurde am 09.02.2003 um 18:39 Uhr von K.M editiert. ]



  • Guck doch selbst nach!!

    Das geht über den Präprozessor in der Art:

    #ifdef WIN32
    nix();

    #ifdef UNIX
    bla();



  • das ding arbeitet mit wxWindows, is auch sowat wie qt



  • Original erstellt von Gregor:
    ...auch beim Backend bist du bei C++ sehr eingeschränkt. Standard-C++ fehlt deutlich mehr als nur ne GUI!

    networking ist n problem, aber das ist das einzige was mir jetzt einfällt.

    aber wie gesagt: nimm ne bibliothek ala Qt und du hast exakt die gleiche portabilität wie Java.


Anmelden zum Antworten