Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

F

Foxy

Jungspund
Hallo,

für eine wissenschaftliche Arbeit beschäftige ich mich mit einem Embedded Linux Rechner, auf welchem ich eine meiner C-Datein zum laufen bringen möchte. Dieses möchte ich mithilfe von Telnet und einem FTP Server zu stande bringen, da ich das ganze von meinem Mac machen möchte. Die C-Datei ist in XCode geschrieben und sollte somit Kompiliert sein (entschuldigt wenn ich hier falsch liege ich hatte bisher nur Grundlagen in Informatik). Die Datei habe ich auf meinem Embedded Sytem abgelegt und finde diese auch über Telnet am besagten Ort. Über chmod +x xxxxx.c habe ich die Zugriffsrechte erteilt, nur beim ausführen über ./xxxxx.c erhalte ich folgende Fehlermeldung und kein Resultat. Das Programm läuft unter Xcode ohne Probleme und führt zum gewünschten Ergniss. Entschuldigt bitte diese Frage, nur begrenzen sich meine Unix-Kenntnise eher auf Null und ich verspreche Besserung ?(

./main.c: line 1: //: is a directory
./main.c: line 2: //: is a directory
./main.c: line 3: //: is a directory
./main.c: line 4: //: is a directory
./main.c: line 5: //: is a directory
./main.c: line 6: syntax error near unexpected token `('
./main.c: line 6: `// Copyright (c) 2014 xxxxxxxx. All rights reserved.'

Ps. Es soll zum Beispiel ein einfacher Text wie Hallo Welt ausgegeben werden

//
// main.c
// Hallo Welt
//
// Created by xxxx on 23.01.14.
// Copyright (c) 2014 xxxx. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[])
{

// insert code here...
printf("Hallo, Welt!\n");
return 0;
}

Vielen Dank für eure Hilfe :))
 
Hallo,
Die C-Datei ist in XCode geschrieben und sollte somit Kompiliert sein (entschuldigt wenn ich hier falsch liege ich hatte bisher nur Grundlagen in Informatik).

Ja hier liegst du falsch! Die main.c die du kopiert hast beinhaltet nur den Quelltext und muss noch übersetzt werden. Das musst Du (für gewöhnlich) auch auf dem Linux-System machen, da OSX ein anderes Format für seine Binaries verwendet (und da es sich um ein Embedded-System handelt vermutlich auch eine andere Prozessorarchitektur)

Kompilieren kannst Du das unter Linux mit folgendem Befehl:
Code:
gcc -g -Wall -o helloworld main.c
(Option -g brauchst Du nur falls du einen Debugger verwenden willst, und -Wall zeigt dir warnings an. -o bestimmt den Programmnamen)
Danach kannst Du das Programm so ausführen:
Code:
./helloworld
 
Super :) Vielen Dank werd ich gleich mal ausprobieren und berichten :D
 
Habe das ganze gerade mal durchgespielt und anscheinend fehlt der passende Compiler. Zumindest wird unter gcc -v oder gcc --version nichts gefunden, bzw. gcc -o helloworld main.c kann nicht ausgeführt werden da der Befehl gcc nicht bekannt ist.
 
So Du auf dem embeded-System keine Software installieren kannst - meist gibt es für solche "abgekapselten" Systeme Build-Umgebungen, mit denen man auf anderen Systemen entsprechende Binaries erstellen kann - wälz mal die Doku zu dem System.

Alternativ schau mal, ob Du zu dem konkreten System / Hardware / Architektur einen Cross-Compiler findest...
 
So wie ich das sehe schlägt die Dokumentation hier nichts weiter vor. Es wird empfohlen coLinux oder ein Linux basierendes PC System zu verwenden um den nativen GCC Compiler von Linux zu nutzen. Ich habe mich mal versucht, sofern man das ganze überhaupt als Versuch zählen darf, da die Ergebnisse mehr als enttäuschend sind, einen Cross Compiler für die Architektur zu finden... Wie schon erwähnt war es ein voller Misserfolg. Als Board nutze ich das SSV DIL/NetPC Sk29 bzw NetPC/2486 mit folgenden Spezifikationen:


# DnP/2486 with Vortex86SX- 32bit SoC MCU @ 300MHz,
# 64;Byte DDR2 SDRAM @133 MHz
# 1 GByte NAND FLASH Memory

als Features werden angegeben

# Syslinux 3.63
#Linux- Kernel Version 2.6.18.8-dmp-ssv1
#Debain Etch 4.0 based ext3 rootfs filesystem
#Java Build 1.60_03-b05
#GNU bash 3.1.17
#packing tools (zip,...)

und vieles mehr...

Auf welchen Daten muss der gesuchte Compiler nun basieren? Sprich worauf muss ich bei der Suche achten, bzw könntet ihr mir anonsten einen empfehlen der leicht zu implementieren wäre?

Lg und entschuldigt abermals mein Unwissen
 
Schau mal ob du das embeded system nicht mit qemu nachbauen kannst, dann müsstest du dort nur nen compiler zum laufen kriegen und könntest quasi 'native' compilieren.
cross compilen geht natürlich auch, kann aber schnell ein abenteuer für sich werden.
 
Qemu hört sich als alternative schonmal sehr interessant an vielen dank schonmal, nur möchte ich es weitgehend ohne zusätzliche Programme lösen können sofern dies möglich ist. Einen Windows Rechner hätte ich zur Not auch zur Verfügung mit coLinux jedoch dachte ich das es vielleicht einzig über das MacOS realisierbar sei ohne größeren Aufwand wo ich mich wohl getäuscht habe, sofern es keinen Cross Compiler gibt den ich laie einfach implementieren kann :hilfe2:
 
Kannst du auf dem embeded System denn Software installieren? In dem Fall wäre es das einfachste gcc nach zu installieren...
 
Hallo,

so nach Rücksprache mit dem zuständigen Leiter wurde festgelgt das keine zusätzlichen Programme auf dem embedded Installiert werden sollen, sprich es soll auf dem Host compiliert werden. Gibt es einen Compiler der meinen Quellcode aus Xcode in das Binärformat von Linux übersetzt? Oder muss ich zwangsläufig ein virtuelles Betriebssystem einrichten und hierüber compilieren?

Ps ich hatte noch den Befehl apt-get install gcc gefunden welcher jedoch in massiven Fehlermeldungen unterging auf dem Embedded...
 
Es gibt wohl crosscompiler für OSX -> Linux...ich hab mich damit zwar noch nicht wirklich beschäftigt, aber was ich so gehört habe dürfte das schon ein wenig Frickelei sein (korrigiert mich wenn es da schöne Wege gibt)...
Da das von Dir verwendete embedded System wohl x86 kompatibel ist dürfte es denke ich das einfachste sein, zu testen ob das nicht mit Virtualbox und einem beliebigen Linux läuft...
 
einen passenden fertigen Cross Compiler zu finden scheint wohl wirklich schwer, einzig habe ich folgenden gefunden, wozu es jedoch leider nur wenig Informationen gibt inwiefern dieser noch Konfiguriert wird.

http://crossgcc.rts-software.org/doku.php?id=compiling_for_linux

Hat einer von euch schon Erfahrungen hiermit gemacht? Ansonsten werde ich den Weg über Virtualbox gehen :)
 
QEMU gibt's auch über die MacPorts: http://www.macports.org/
Wenn dein Embedded-System aber sogar apt-get zur Verfügung hat, dann würde ich eher versuchen das zum Laufen zu bekommen und damit einen Compiler zu installieren.
 
Ich habe hier mal die Fehlermeldung angehängt die ich bei apt-get install gcc bzw build-essential erhalte... Für mich sieht es so aus als ob das Board keine Verbindung zum Server aufbauen kann aus welchem Grund auch immer?!

Ohne Titel 2.png
 
Offenbar kann dein System ftp.debian.de nicht erreichen. Hat das System überhaupt Internet-Zugriff?
 
Den einzigen Zugriff den ich auf das Embedded habe erfolgt über den Ethernetport, sofern das Board also nicht die Daten über meinen Mac holen kann was mir jetzt recht unsinnig erscheint würde ich sagen nein... Würde es ausreichen wenn ich das Board an meinen Router hänge und dieses dann über Com ansteuere und die Befehle erneut versuche?

Ps vielen vielen Dank für eure Hilfe soweit! Ich verspreche Besserung in Sachen Wissen über Unix und Embedded Systeme
 
Wenn das System seine Netzwerk-Konfiguration via DHCP bezieht, sollte das funktionieren.
 
Ich habe gerade nochmal das Vorgeschlagene Macports mir angeschaut. Wie ist dieses System genau zuverstehen? Es ermöglicht mir die Installation von nicht spezifisch für MacOS hergestellte Programme? In der Portliste sind verschiedene CrossCompiler zu finden unter anderem auch der x86_64-elf-gcc 4.7.2 The GNU compiler collection for x86_64-elf. Wäre dieses Verfahren wie eine Art virtuelles OS, bzw Programm was meine Programme wie erwünscht auf elf compiliert und ich diese dann nur noch über einen Ftp Server zu transferieren brauche?
 
MacPorts ist eine Sammlung an OpenSource-Tools die für MacOSX angepasst und kompiliert wurden. Dadurch hat man auf seinem Mac relativ einfach die Programme zur Verfügung, die man von Linux gewohnt ist. U.a. eben auch Dinge wie GCC oder QEMU. Inwiefern die Compiler von den MacPorts tatsächlich für Crosscompiling geeignet sind, hab ich mir noch nicht angeschaut. Aber mit dem QEMU solltest du dein Embedded-System relativ einfach emulieren und so an deine Wünsche anpassen können.
 

Ähnliche Themen

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

dovecot und postfix Konfiguration Problem

Windows clients können nicht mehr auf lange laufendes System zugreifen

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben