Mit C das OS rausfinden
-
p1royal2 schrieb:
Gibt es einen Trick mit Standard C Befehlen das richtige Betriebssystem zu erfahren?
Nein. Definitiv nicht. Das sinnvollste ist immernoch mit Makros bedingte Kompilation zu haben, wobei das Makro halt vom Benutzer beim kompilieren definiert werden muss (Ausnahme sie vordefinierte Makros).
Visual Studio definiert z.B. automatisch WIN32.
-
Das bringt ihm ja nichts. Er will es zur Laufzeit feststellen. Der "dumme Anweder" mag es meistens nicht sein Programm zu kompi...was?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also mir geht es um eine ODBC Bibliothek. Und mit Makros fang ich lieber mal nicht an. Und es ist kein Windows, aber was es ist, kann ich überhaupt nicht einschätzen! Gibt es keine Systemvariablen?
-
FrEEzE2046 schrieb:
Das bringt ihm ja nichts. Er will es zur Laufzeit feststellen. Der "dumme Anweder" mag es meistens nicht sein Programm zu kompi...was?
Deswegen muss er vorkompilierte Versionen rausbringen, und da kann er es selbst definieren. Ein Programm, kompiliert für Linux, läuft nicht unter Windows.
-
p1royal2 schrieb:
Gibt es keine Systemvariablen?
Das auslesen von Systemvariablen ist vom System abhängig, also musst du je nach System anders vorgehen. Und um zu wissen wie du vorgehst, musst du wissen um welches System es sich handelt.
-
Oder andersrum, gibt es Befehle die nur auf einem OS laufen? Und dann nach dem Ausschlußverfahren ausprobieren?
-
p1royal2 schrieb:
Oder andersrum, gibt es Befehle die nur auf einem OS laufen? Und dann nach dem Ausschlußverfahren ausprobieren?
Wie willst du eigentlich ein C-Programm kompilieren, wenn du nicht weißt für welches System?
-
p1royal2 schrieb:
Oder andersrum, gibt es Befehle die nur auf einem OS laufen? Und dann nach dem Ausschlußverfahren ausprobieren?
Was du willst ist einfach totaler Quark.
Ein Programm für das System X kompiliert ist, wird nicht auf anderen Systemen laufen. So einfach ist das. Daher musst du selbst bereits wissen, für welches System du kompilierst, und kannst daher auch gleich ein Makro definieren.
-
ist C nicht portabel
-
zum Beispiel schrieb:
ist C nicht portabel
Der Quellcode schon, Kompilate aber nicht.
-
eins der probleme die dabei auftreten ist, dass du ein fertiges programm starten mußt. dazu verwendet windows pe-dateien, linux elf dateien und für mac weiß ichs nicht, die werden aber auch sicher ihr eigenes süppchen kochen. also auch wenn es die selben cpu's sind sollte dein programm nicht starten, da eben der einsprungspunkt nicht stimmt.
-
p1royal2 schrieb:
Und mit Makros fang ich lieber mal nicht an.
Hmm, na dann viel Spass. Anders geht das nämlich nicht.
-
Also, das Ding kam an, ich programmiere unter Windows und der Compiler ist auf Dos Ebene und schreibt mir zwar irgendwas von Toshiba, aber eben auch nicht für welches OS. Die Standard Bibliotheken waren ebenfalls mit dabei uns so programmiere ich ja schon fleißig vor mich hin. Nur muss ich jetzt eine fremde Bibliothek einbauen (halt #include <odbc.h> und dafür muss ich die richtige im Internet finden...
-
p1royal2 schrieb:
Also, das Ding kam an, ich programmiere unter Windows und der Compiler ist auf Dos Ebene und schreibt mir zwar irgendwas von Toshiba, aber eben auch nicht für welches OS. Die Standard Bibliotheken waren ebenfalls mit dabei uns so programmiere ich ja schon fleißig vor mich hin. Nur muss ich jetzt eine fremde Bibliothek einbauen (halt #include <odbc.h> und dafür muss ich die richtige im Internet finden...
Da hast du doch dein OS, es ist DOS. Ob das von irgendeiner Bibliothek (wie odbc) unterstützt wird, ist eine andere Frage. Vermutlich nicht.
-
Check ich nicht, wo ich es Compile ist doch doch nicht das System für das ich es Compile?
Ich kann doch auf Windows ein Programm kompilieren das nur auf Linux läuft!?
-
Learn the fucking basics.
Du kompilierst für ein bestimmtes System. Du musst natürlich vorher wissen wofür du kompilierst. Du kannst das kompilierte Programm nur auf diesem System benutzen.
-
p1royal2 schrieb:
Check ich nicht, wo ich es Compile ist doch doch nicht das System für das ich es Compile?
Doch, eben das (oder ein damit kompatibles. Einzige Ausnahme wäre, wenn der Compiler in der Lage ist für andere Plattformen zu kompilieren (was aber die Ausnahme, nicht die Regel ist).
p1royal2 schrieb:
Ich kann doch auf Windows ein Programm kompilieren das nur auf Linux läuft!?
Nein, oder nur mit speziellen Compilern.
Verwechsle nicht schreiben mit kompilieren. Schreiben kannst du in der Tat Code für unterschiedlichste Systeme, kompilieren kannst du (in der Regel) nur für die Plattform, auf dem du das Kompilat erstellst.
-
Hey Janjan, lern zu lesen!
Ich kompiliere in Dos, bekomme ein *.shx Datei raus, übertrage die Datei (wie beschreibe ich jetzt mal nicht) auf das Gerät, aktiviere es (wie beschreibe ich jetzt mal nicht) und das Ding läuft. Also, ich muss vorher erst mal nichts wissen, da das programmieren bereits läuft und funktioniert. Ich will jetzt aber mit Bibliotheken arbeiten, die nicht vom Hersteller sind. Ich gehe z.B. auf diese Seite und frag mich jetzt welches System ich probieren muss.
Warum müssen in Forum immer Leute antworten die einen für blöd halten oder sich darüber aufregen, daß der jenige seine Frage nicht selbst beantworten kann.
Mein Frage ist simpel: Ich habe ein Gerät, einen Compiler (wo er läuft ist doch egal aber bitte: DOS) und eine kompilierte Datei die nur auf diesem Gerät läuft. Wie finde ich das Betriebssystem raus?@asc: doch, so einen Compiler habe ich ja. Ich kann ja nur auf einem PC kompilieren. Sehe es wie z.B. ein Symbian Handy, da kompilierst du ja auch auf einem Windows Rechner... Nur weiß ich bei dem Handy ja schon vorab vom Hersteller welches OS
-
p1royal2 schrieb:
Wie finde ich das Betriebssystem raus?
Einfachste Möglichkeit: Du fragst beim Hersteller nach. Bei dem Link den du gepostet hast, stand übrigens irgendwas von Cipherlab OS.
asc schrieb:
Doch, eben das (oder ein damit kompatibles. Einzige Ausnahme wäre, wenn der Compiler in der Lage ist für andere Plattformen zu kompilieren (was aber die Ausnahme, nicht die Regel ist).
Quatsch. Cross-Compiler sind bei solchen Geräten die Regel. Das OS muss auch nicht kompatibel sein.