Einfaches "Hello World" will ned

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich wollte mal ein primitives "Hello World" auf der DS kompillieren. gcc und ld sind installiert. Auch meldet der Compiler keine Fehler. Jedoch passiert beim Aufruf des Programs rein gar nichts, was ich mir wirklich nicht erklären kann
Code:
//test.c Datei
#include <stdio.h>
int main () {
 printf("Hello World");
 return 0;
}
und dann den gcc mittles
Code:
gcc -x c -o test test.c
kein Gemecker über Fehler, aber beim Aufruf von test passiert rein gar nichts.

Danke für jeden Wink mit dem Zaunpfahl :)

tobi
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Problem gelöst, sass 30cm vor dem Bildschirm

test war natürlich ein denkbar schlechter Name für das "Hello World". Da auf meiner DS auch ein "echtes" Programm test im Pfad liegt. Habe das ganze einfach mit test aufgerufen. Als ich gerade eben ./test verwendet habe, funzte alles wie erwartet <KopfGegenDieWandRamm>

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hast du eigentlich die kleine Entwicklungsumgebung für c (und c++) im AdminTool gesehen?

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du eigentlich die kleine Entwicklungsumgebung für c (und c++) im AdminTool gesehen?

Itari
Nope die habe ich noch nicht gesehen. Hast du da etwa auch etwas dazu gemacht? Du bist echt krass :)
Könntest du ggf noch VisualStudio im AdminTool integrieren? ;)

Gruss

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Was ist VisualStudio? :D

Itari

.
 

Anhänge

  • adm_c.jpg
    adm_c.jpg
    43,2 KB · Aufrufe: 108

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also bei diesem Codeschnippel hat mir der gcc Warnings um die Ohren gehauen, weil main() einen int zurückgeben sollte ;)
Werde mir das Teil beizeiten aber sicher genauer anschauen. Da zur Zeit aber meine Testmaschine ned läuft und ich noch im Urlaub bin wird das noch bis in 2 Wochen warten müssen ;)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Also bei diesem Codeschnippel hat mir der gcc Warnings um die Ohren gehauen, weil main() einen int zurückgeben sollte ;)

Das ist ja auch richtig so, dass da Warnings kommen :D. Aber wer hat sich je für Warnings interessiert, wenns ums Hacken geht ...

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Das haste natürlich Recht. Nur finde ich ein return sollte immer sein bei einer Funktion, egal in welcher Sprache ;)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Das haste natürlich Recht. Nur finde ich ein return sollte immer sein bei einer Funktion, egal in welcher Sprache ;)

Wobei bei ich bei der besonderen Funktion 'main' eigentlich lieber ein exit() statt eines returns mache - Gewohnheiten, aber da bei der Funktion main return und exit äquivalent sind, geht natürlich beides ...

Rich (BBCode):
/* exit example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","r");
  if (pFile==NULL)
  {
    printf ("Error opening file");
    exit (1);
  }
  else
  {
    /* file operations here */
  }
  return 0;
}

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
cross-compile "Hello World"

Habe mich gestern mal am cross-compiling versucht. Dazu die Tool Chain wie im PDF beschrieben auf meinem Linux entpackt (Sidux). Danach das einfache "hello world" genommen, das sich auf der DS direkt problemlos kompillieren lässt. Der Compiler rennt auch auf dem Linux durch, doch nach dem Kopieren auf die DS, hauts immer einen Segmentation Fault (core dumped) raus.
Auch das Codebeispiel, das im PDF von Synology steht haut den gleichen Fehler raus.
Die Tool Chain müsste gemäss PDF die Richtige sein für meine DS (109+)
Hat jemand eine Idee wo ich schrauben muss?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Cross-Compilation haut dir natürlich keine Fehler raus, weil das ist ja gewollt, dass du für ein anderes System was übersetzt.

Ich würde mir die Binaries mal mit einem Binär-Diff anschauen, was da unterschiedlich ist. Vielleicht steht im Header schon drinne, dass du was für den falschen Prozessor kompliert hast (also irgendwie das falsche Toolchain erwischt hast).

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
(also irgendwie das falsche Toolchain erwischt hast).
Das habe ich etliche Male Zeichen für Zeichen mit der vorgeschlagenen Toolchain im PDF gemacht. Gemäss dem Syno-PDF ist es eindeutig die richtige Toolchain.
Das mit dem Binär-Diff werde ich heute Abend mal noch probieren.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hast ja mehrere DSen. Kannst ja mal für eine andere kompilieren.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast ja mehrere DSen. Kannst ja mal für eine andere kompilieren.

Itari
Werde es auchmal für die 107+ probieren. Komischerweise habe ich in der Toolchainübersicht im PDF keine Erwähnung der DS408 gefunden. Gibt es für die keine Toolchain oder kann man jene der RS408 Modelle verwenden?
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.020
Punkte für Reaktionen
273
Punkte
393
Hallo,
Rich (BBCode):
file <prog_name>
erzählt Dir alles wissenswerte über das binary. Kann mir eigentlich nur vorstellen, daß Pfade oder Umgebungsvariablen falsch sind.

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@goetz oder wer's sonst weiss ;)
file wirft mir die folgenden Fehler
webserver> file sysinfo
sysinfo: ERROR: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked (uses shared libs)error reading (Invalid argument)

webserver> file hello
hello: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked (uses shared libs), stripped
Nochmals habe ich die ToolChain Version exakt mit dem PDF abgeglichen. Für die DS109+ habe ich mir gcc343_glibc234_853x.tgz runtergeladen und entpackt. Gemäss PDF müsste dat korrekt sein.

Any ideas?
Gruss + Danke

tobi
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Mach doch noch mal einen Binär-diff ... vielleicht sind ja die Bibliotheks-Referenzen unterschiedlich und du kannst vielleicht erkennen, wie der Unterschied ist.

Itari
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.020
Punkte für Reaktionen
273
Punkte
393
Hallo,
@tobi
wirklich helfen kann ich momentan nicht. Meine 106 ist aus und 250km weit weg und für ne toolchain 107+ finde ich hier nicht genügend Zeit am Stück, mein Reha-Plan ist schon recht eng.

Grüße aus dem Harz

Götz
 

moebi

Benutzer
Mitglied seit
23. Mai 2010
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Ich erhalte auch den Segmentation fault und genau die gleiche Fehlermeldung für file:

Code:
ds210p> file ./sysinfo
./sysinfo: ERROR: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked (uses shared libs)error reading (Invalid argument)

Wenn ich es mit dem gcc aus dem ipkg direkt in der Box kompiliere, dann funktioniert es wunderbar (sprich: Lässt sich ausführen und file macht korrekte Ausgaben). Allerdings würde ich schon gerne die Cross-Compiler auf meinem Desktop-System benutzen. Grad für größere Angelegenheiten wäre das schon wichtig.

Es wird laut Manual der gcc343_glibc234_853x.tgz für die DS210+ benötigt, /proc/cpuinfo behauptet allerdings, dass es eine MPC8544 sei. Naja, mit beiden Toolchains funktioniert es nicht.

Würde mich über Hilfe sehr freuen.



Nachtrag: Wenn ich auf meinem Desktop-System die ausführbare Datei mit file analysiere, erhalte ich den Fehler nicht und die Ausgabe ist korrekt.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat