Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
vinny
Anmeldungsdatum: 27.02.2007 Beiträge: 32
|
Verfasst am: 24.07.2007, 19:00 Titel: Unter Windows zu Linux compilieren |
|
|
Hi!
ist es möglich, ein unter Windows geschriebenes Programm mit Freebasic zu einem Linuxprogram zu compilieren, so dass dieses ohne Zusatzsoftware mit Linux läuft?
Danke!
Gruß,
vinny |
|
Nach oben |
|
|
The real Agent D
Anmeldungsdatum: 24.11.2005 Beiträge: 605 Wohnort: Hall i. T.
|
Verfasst am: 24.07.2007, 19:03 Titel: |
|
|
Ja, unter Linux kompillieren. |
|
Nach oben |
|
|
vinny
Anmeldungsdatum: 27.02.2007 Beiträge: 32
|
Verfasst am: 24.07.2007, 19:06 Titel: |
|
|
Hi!
danke für die Antwort!
ich hoffe die Frage ist nicht zu blöd: sind das die gleichen Befehle zum Programmieren wie unter Windows? Nachher muss ich eine komplett neue Programmmiersprache lernen |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
|
vinny
Anmeldungsdatum: 27.02.2007 Beiträge: 32
|
Verfasst am: 24.07.2007, 19:10 Titel: |
|
|
Hi!
dann ist ja gut
welche Datei muss ich denn fürs Datum statt vbcompat.bi aufrufen? |
|
Nach oben |
|
|
oiermann
Anmeldungsdatum: 28.12.2005 Beiträge: 90 Wohnort: Leutkirch
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2514 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 26.07.2007, 08:25 Titel: |
|
|
Das sog. Portieren von Applikationen auf verschiedene Plattformen stellt übrigens im Bereich vom Software Engineering ein Thema für sich dar.
@vinny:
Du musst hier klar zwischen dem Built-In-Befehlssatz (welcher hoffentlich auf allen FreeBasic-Compilern für jede Plattform identisch ist) und plattformspezifischen API-Aufrufen unterscheiden. Letztere musst Du in eine eigene Bibliothek einkapseln (=den z.B. Windows-spezifischen .DLL-Aufrufcode in von Dir definierte SUBs und FUNCTIONs verpacken, die Du dann auch unter Linux und sonstwo bereitstellst), so dass programmierte Applikationen portierbar werden. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Emil
Anmeldungsdatum: 14.02.2007 Beiträge: 26 Wohnort: am Ende der Welt
|
Verfasst am: 01.08.2007, 06:49 Titel: |
|
|
So einfach ist es nun doch nicht.
Natürlich muss man immer beachten, dass Linux, welches auch immer, nicht Windows ist.
So z.B. wird ein:
Open exepath+"\meinedatei.txt" for input as #1
unter Linux nicht funktionieren, da Linux kein Backslash ("\") kennt.
Auch muss man bei Linux strickt auf Gross- und Kleinschreibung achten!
Windows ist es egal, ob die Datei "meinedatei.txt" oder "MeineDatei.txt" heisst.
Die Datei würde mit
Open exepath+"\meinedatei.txt" for input as #1
geöffnet werden.
Unter Linux muss unbedingt
Open exepath+"\MeineDatei.txt" for input as #1
geschrieben werden, sollte die Datei denn "MeineDatei.txt" heissen.
Auch gibt es durchaus Befehle, die unter Linux anders oder gar nicht funktionieren.
Es ist durchaus machbar Windowsprogramme auf Linux zu portieren, aber mit einem einfachen: "Compaliere unter Linux" ist es mit Sicherheit nicht getan.
Emil |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4644 Wohnort: ~/
|
Verfasst am: 01.08.2007, 08:46 Titel: |
|
|
Emil hat Folgendes geschrieben: | Unter Linux muss unbedingt
Open exepath+"\MeineDatei.txt" for input as #1
geschrieben werden, sollte die Datei denn "MeineDatei.txt" heissen. |
Open exepath+"/MeineDatei.txt" for input as #1
Allerdings sollte Windows keine Probleme haben, wenn / statt \ verwendet wird, dann könnte man gleich die Backslashes durch Slashes ersetzen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 01.08.2007, 08:49 Titel: |
|
|
Oder man löst das mit ein bisschen Präprozessor-Arbeit. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2514 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 01.08.2007, 09:28 Titel: |
|
|
Emil hat Folgendes geschrieben: | .
So z.B. wird ein:
Open exepath+"\meinedatei.txt" for input as #1
unter Linux nicht funktionieren, da Linux kein Backslash ("\") kennt. |
Dateipfade stellen natürlich ein Paradebeispiel zum Thema Portabilität von Applikationen dar. Als Lösung macht es hier Sinn, auch für Pfade eine solche Einkapselungsbibliothek zu schreiben, wo u.a. auch
Code: | FUNCTION PfadSeparator
' Version für Windows
PfadSeparator = "\"
END FUNCTION |
hineingehört, so dass man mit etwa Geschick hoffentlich auch Dateipfade in einer portierbaren Form verwenden kann. Denkbar wäre auch ein Ansatz mit abstrakten Pfaden eines fiktiven Dateisystems, so dass man einfach
Code: | hypothetischerPfad$ = "/c/daten/123.txt"
OPEN portable2os$(hypothetischerPfad$) FOR INPUT AS 1 |
wobei man diese kleine Pfadbibliothek auch möglich optimal den typischen Bedürfnissen anpassen müsste. So haben absolute Pfade in einem Code ohnehin nichts zu suchen, weil man prinzipiell das Vorhandensein bestimmter Laufwerke nicht voraussetzen kann. Denkbar sind aber eine Reihe von FUNCTIONs, die Spezialpfade wie "Eigene Dateien", $HOME (übrigens kann man ein Home-Laufwerk genauso in Windows-Netzwerk mit Domain Controller definieren!) usw. zurückliefern, ferner macht auch das Handling relativer Pfade Sinn. Übrigens einen Dateidialog sollte man ebenfalls besser in diese Bibliothek hineinnehmen, da mittlerweilen beinahe jedes OS mit GUI entsprechende Betriebssystemroutinen bereitstellt (und dort, wo es das nicht gibt, packt man etwas eigenes in die Implementierung hinein!).
Übrigens gibt es nicht nur Windows und Linux, ich erlebte früher als Beispiele die Betriebssysteme MacOS Classic (das MacOS X ist bekanntlich ein UNIX im Hintergrund und deswegen mehr oder weniger mit Linux gleichzusetzen), VAX-VMS und Amiga.
Bei VMS wurden die Pfade immer in eckigen Klammern geschrieben, Pfad-Separator war dort der Punkt. Eine Stufe höher war dort "-". So musste dort ein
Code: | ../../Bilder/Lib1/Giraffe.gif |
als
Code: | [--.BILDER.LIB1]GIRAFFE.GIF;0 |
(Versionsnummern gab es auch noch!) geschrieben werden.
Zum Amiga: Verwendet genauso wie UNIX/Linux den "/" als Pfad-Separator, aber Laufwerke wie "DF0:" gab es dort zusätzlich noch und statt
schrieb man
Obiges Beispiele musste also als
Code: | //Bilder/Lib1/Giraffe.gif |
geschrieben werden.
Aus der klassischen Apple-Welt: Dort hatte ich in dem Sinn als "Kommandozeilen-fähiges" Programm einmal Matlab im Gebrauch: In Dateipfaden kam dort immer der ":" als Pfad-Separator zum Zug. War dann als
Code: | Volume1:Programme:Bilder:Lib1:Giraffe.gif |
formuliert.
Schlussendlich will ich damit sagen: Für das Design einer solchen Pfadabstraktionsbibliothek muss man sich mit möglich vielen Betriebssystemplattformen auseinandersetzen und geeignete gemeinsame Nenner suchen. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 01.08.2007, 11:25 Titel: |
|
|
das dank präprozessoren inzwischen ganz einfach in freebasic:
Code: |
#ifdef __FB_WIN32__
Const OsType = "Windows"
Const Slash = "\"
#endif
#ifdef __FB_DOS__
Const OsType = "DOS"
Const Slash = "\"
#endif
#ifdef __FB_LINUX__
Const OsType = "Linux"
Const Slash = "/"
#endif
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
|