Autor Thema: compeiler option  (Gelesen 7448 mal)

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« am: 23. May 2006, 15:26 »
hallo,

kann man quellcode in irgend einer hochsprache so compelieren das er unabhängig vom betriebssystem läuft sobald man ähnliche bzw gleiche hardware benutzt damit meine ich aber nicht java denn dazu muss mann ja wieder die jvm installieren. ich meine das der quellcode binär übersetzt keine vom betriebssystem mit gelieferten funktionen zurückgreift. das z.B. dos interrupts in in/out 's übersetzt werden.

gruß

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 23. May 2006, 15:41 »
Hi

Kleines henne ei problem würd ich mal sagen. ich will OS unabhängig sein, aber du brauchst ein OS das dein Programm übarhaupt mal lädt. COM und EXE kennt unix nun mal leider nicht.

2. Moderne Betriebsyteme erlauben keinen direckten HW zugriff, da dadurch das system gefärdet werden könnte. Du bist somit auf das OS angewiesen. Dessen aufgabe es ja eigentlich ist, die arbeit einfacher zu machen und sachen wie File IO dem Porgramm zur verfügung zu stellen.

Bleibt die einzige möglichkeit direckt beim Booten dein programm zu starten. dann fingert auch wirklich kein OS dazwischen. Dann sag ich nur wilkommen in der Computersteinzeit (so vor 1980), in der sich ein Programm um alles selber kümmern muste.

gruss

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 23. May 2006, 15:47 »
mit computersteinzeit triffst du es so ziehmlich genau deshalb meine frage nach der richtigen übersetzung des quellcodes mir sind die probleme bewußt also schreib kein scheiß wenn de nicht helfen kannst.

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 23. May 2006, 15:57 »
a) solche worte wie sche*** möcht ich hier nicht sehen
b) triffts das mit steinzeit wunderbar
c) ist das was du machen willst praktisch ProgrammQuellcode zu System -,- ohne bytecodeinterpreter / java-ähnliches bekommst sowas NICHT hin. Wenn du es doch machen wolltest, bräuchtest du, hmmm, Implementierungen aller gängiger API's, und eines grundsystemes dass das ganze Prog verwaltet (oder du müsstest den Code halt entsprechend anpassen dass der nen kernel abgibt)
Insofern... Vergiss es
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 23. May 2006, 16:17 »
k keine schmutz worte mehr aber das programm starte ich beim bootvorgang allerdings wie du weißt kann man da nur auf bios funktionen und das direkte ansprechen von hardware über i/o ports und ram zugreifen. vieleicht gibt es ja software die das beim compilieren berücksichtigt.

Termite

  • Beiträge: 239
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 23. May 2006, 16:46 »
Hi

also

1. ob das nun systemabhängig ist oder nicht hängt grundsätzlich davon ab, wie du deinen code schreibst und nicht davon wie du die datei übersetzt wird. Wenn du keine Systemaurfufe machst, kein new, delete, alloc, free, ... verwendest, bist du erst einmal nicht vom system abhängig. Die datei, die der Compiler erzeugt ist hingegen ggf von dem system abhängig auf dem du entwickelst bzw von der Toolchain die du verwendest.

2. die eigentliche systemabhängigkeit entsteht erst wenn du linkst. dort werden die OBJ-Dateien mit den ggf notwendigen libs zu einem Programm gebunden. Wie das output aussieht, hängt ganz von der Zielplatform ab. Für MS COM und EXE, für Linux elf, ... und zum schluss noch flat binary (wobei das nicht alle erzeugen können aber ich nehme mal an, das ist was du haben willst.).

so nun zurück zu deiner frage. Ja man kann mit einer Hochsprache Code schreiben der OS unabhängig ist (z.B. C, C++ halt immer mit einschränkungen versehen). Es ist nur die frage ob es ein OS auch ausführen kann ( ohne ein und ausgabe ist ein program leider nicht viel Wert )

gruss

nameac

  • Beiträge: 71
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 23. May 2006, 17:37 »
ja genau das ist mein problem ich kann keine mir bekannten lib's nutzen weil diese beim linken einfach nur eingebunden werden und alle auf dos bzw. da aufsetzen unter welchem system man gerade arbeitet wenn diese aber irgend wo im compilier vorgang oder danach von software so übersetzt werden könnte das da system spezifische funktionen weiter zurück übersetzt werden dann könnt ich *.bin schreiben nach denen ich strebe.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 23. May 2006, 19:02 »
Entweder du machst dein Programm vom Betriebssystem abhängig (von der Hardware ist es das sowieso) oder eben nicht.
Im ersten Fall läuft dein Programm nur unter diesem einen Betriebssystem, dafür kannst du aber libs benutzen. Im anderen Fall ist es umgekehrt.

Linux-Programme sind Linux-Programme, egal, wie du sie kompilierst oder linkst. Die verwendeten Syscalls und Strukturen sind inkompatibel zu Windows - darum gibt es Emulationen und Emulatoren (oder Simulatoren).

Wenn du ein komplett unabhängiges Programm schreiben willst, musst du es vom BIOS laden lassen - und dann hast du ein Betriebssystem (wenn du noch ein paar Kleinigkeiten hinzufügst, bspw. Programme ausführen, Treiber etc *g*).

Betriebssystemunabhängig programmieren ist ein Traum, denn jeder Betriebssystemhersteller wird sich hüten, kompatible Schnittstellen zu verwenden, wo es nicht erforderlich ist (ich spiele auf einen ganz bestimmten an).

Gruß,
Svenska

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #8 am: 23. May 2006, 19:04 »
hmm, nja aber es gibt libs, wie zb wxWidgets, also die GUI, die lib ist unter windows und linux verfügbar, somit sockets etc gleich, man braucht nur die lib, und solange man die functionen aus der lib nutzt gehts bei alles systemen, odeR?
thetrue way is my way

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 23. May 2006, 19:08 »
...nur, wenn die Lib auch auf das spezielle System portiert ist.
Außerdem bräuchtest du ja nicht nur für GUI und Sound eine Lib, sondern auch für I/O, Dateien, Sockets, ... und ich bezweifle, dass einer einen OS-unabhängigen Layer für alles komplett schreibt. Außer Java vielleicht.
Trotzdem musst du dein Programm neu kompilieren, mit der passenden Version der Lib.

Gruß,
Svenska

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #10 am: 23. May 2006, 19:10 »
Zitat von: Svenska

Trotzdem musst du dein Programm neu kompilieren, mit der passenden Version der Lib.

ne das ist klar
aber da die meisten systeme ja in pmode laufen kann man ja auch den hardware zugrief vergessen :(
thetrue way is my way

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 23. May 2006, 19:11 »
Und damit brauchst du einen OS-abhängigen Layer, der dir den Zugriff auf Treiber erlaubt. Zur Ursprungsfrage: Geht nicht :)

 

Einloggen