www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Segmenation Fault Error


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


kann man unter Windows Programme erstellen die auch unter Linux 
gestartet werden können?
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("test"); 
    while(1);
}

Hab dieses Prog unter Windows kompiliert mit GNU (cygwin installiert) 
und anschließend das resultierende elf-File auf einen Linux-Rechner 
gepackt. Beim Ausführen dieser Datei gab es dies Fehlermeldung:

"Segmentation fault": wenn ich das printf() rausnehme, läuft die Datei 
bzw. das Programm unter Linux.

Weiß jmd zu diesem Verhalten etwas genaueres?

Gruß
Bernd

Autor: faustian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sanity check: Was sagt denn ldd auf linux zu dem binary?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das geht doch nicht, man müsste es mit einen cross-compiler machen dafür 
braucht man dann auch alle libs von dem linux system auf dem windows 
system.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst nicht erwarten, dass ein für Windows kompiliertes Programm auf 
Linux läuft.  Wie auch?  Die Laufzeitumgebung ist eine ganz andere. 
Cygwin ist schließlich nicht Linux und kein Cross-Compiler, sondern ein 
paar Unix-Tools für Windows.

Vielleicht bekommst Du es mit wine zum Laufen, aber bloß weil etwas mit 
cygwin erstellt wurde, ist es noch lange kein Linux-Programm.  Die 
Cygwin-exes kannst Du schließlich auch nicht einfach unter Linux 
starten.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welchen cross-compiler gibt es denn für windows und arm-linux? Reicht es 
wenn man GCC und die Binuitls installiert?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da scheint ein Missverständnis vorzuliegen.

Ein Cross-Compiler ist ein Compiler, der auf Betriebssystem A läuft und 
ein EXE für Betriebssystemm B erzeugt. Dieses B-EXE ist in der Regel 
nicht auf A ausführbar.

Das liegt schon alleine daran, dass es unzählige Möglichkeiten gibt, wie 
man die Kommunikation eines Programms mit dem BS (das sog. API) 
implementieren kann. Und immer dann, wenn es mehrere Möglichkeiten gibt, 
kann man davon auch ausgehen, dass sie alle von irgendjemanden benutzt 
werden. C abstrahiert davon ein gemeinsames Subset und verlagert die 
Details in die Runtime Library. Aber nur weil man diese Details so nicht 
mehr sieht, heißt das nicht, dass sie nicht mehr existent sind.


Man kann mit einem Cross-Compiler das System A benutzen um damit ein EXE 
für System B zu erzeugen. Das kann zb dann sinnvoll sein, wenn man auf A 
eine wesentlich bessere Entwicklungsumgebung zur Verfügung hat, als es 
auf B jemals möglich sein wird. Oder aber in der Bootstrap-Phase, wenn 
die Systemumgebung auf B das erste mal hochgezogen wird. Anstatt auf 
niedrigsten Byte-Level arbeitet man dann mit einem komfortablen 
Editor/Entwicklungswerkzeugen auf A.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stellt Code-Sourcery ein entsprechenden Cross-Compiler dar für 
Windows-Plattform nach ARM-embedded-Linux?


Und hat jmd damit schon Erfahrungen sammeln können?

Gruß
Bernd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.