1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

C-Programm auf Android

Dieses Thema im Forum "Android OS Entwicklung / Customize" wurde erstellt von htcdesiree, 02.05.2011.

  1. htcdesiree, 02.05.2011 #1
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Hallo,

    Wie kann ich ein C Programm von meiner Linux Kiste auf das Android Handy bringen???
    Ich habe jetzt schon zig Anleitungen durch angefanngen von agcc bis hin zum ndk... Nichts funktioniert.

    Im Moment probier ich es mit folgendem Makefile:
    Das Ergebnis ist dann:
    EDIT:


    Die Fehler bezüglich den fehlenden Libs etc. bekomme ich bei agcc auch.
    Kann mir wer weiterhelfen? Ich find den Fehler nicht...
     
    Zuletzt bearbeitet: 02.05.2011
  2. ramdroid, 03.05.2011 #2
    ramdroid

    ramdroid Android-Experte

    Beiträge:
    644
    Erhaltene Danke:
    89
    Registriert seit:
    20.10.2010
    Es wird wohl irgendwie mit dem NDK funktionieren, aber habe ich auch nicht hinbekommen (bin ja eigentlich auch Linux Neuling)

    Habe irgendwo einen Download für einen cross compiler gefunden mit dem es aber dann auch geradewegs funktioniert hat. Das schaut dann so aus:

    Hello.c

    Make:


    Habe den CC über mein Dropbox freigegeben (sind knapp über 20mb):

    http://dl.dropbox.com/u/11516830/cross-compiler-armv6l.tar.bz2
     
    PJF16 bedankt sich.
  3. htcdesiree, 03.05.2011 #3
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Danke für die rasche Antwort!
    Werd's gleich mal ausprobieren.
     
  4. htcdesiree, 03.05.2011 #4
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    edit hat sich erledigt :)
    link funktioniert - probier die sache jetzt gleic haus.
     
  5. htcdesiree, 03.05.2011 #5
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Hallo,

    Kompilierungsvorgang funktioniert jetzt einwandfrei.
    Wenn ich das Programm auf dem HTC mit ./programm starte bekomme ich leider "Permission Denied".
    Hab zur Sicherheit chmod 777 gemacht - keine Änderung.
     
  6. ramdroid, 03.05.2011 #6
    ramdroid

    ramdroid Android-Experte

    Beiträge:
    644
    Erhaltene Danke:
    89
    Registriert seit:
    20.10.2010
    wohin hast du's denn kopiert?
    Auf der SD Karte hast du meines Wissens nach z.B. keine Ausführ-Rechte

    du kannst sonst einfach:

     
    htcdesiree bedankt sich.
  7. htcdesiree, 03.05.2011 #7
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Danke!
    Verdammt ich hätte einfach die mount table anschauen sollen, dann hät ichs selber gesehen....

    Funktioniert jetzt :)
    *bitte nicht erschlagen für den fehler*
     
  8. htcdesiree, 03.05.2011 #8
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Edit:
    Kann es sein dass popen() auf Android nicht funktioniert?
    Habe eine Funktion wie:
    Bringt mir einfach kein Ergebnis! z.B. wird
    oder
    übergeben. Nichts. Ich bekomme:
    aber popen() führt nichts aus...
    habe auch schon versucht:
    zu übergeben - selbes Ergebnis.

    Weiß da wer bescheid?
     
  9. XPosition, 03.05.2011 #9
    XPosition

    XPosition Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    24.02.2011
    Überprüfe mal ob stream == NULL und gib dann die errno aus.
    Außerdem würde ich nicht so viel Stack verbraten.
    Das geht auch in kleineren Häppchen.
     
  10. htcdesiree, 04.05.2011 #10
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Hey,
    Also hab mal mit NULL abgefragt

    Code:
    void exec(string cmd)
    {
            cout << "GET VALUE: " << cmd << endl;
      char buffer[BUFFER_SIZE];
      FILE *stream;
    
      stream = popen(cmd.c_str(), "r");
    if (stream == NULL)
            cout << "Stream is NULL" <<endl;
    
      while ( fgets(buffer, BUFFER_SIZE, stream) != NULL )
            cout << buffer <<endl;
    
      pclose(stream);
    }
    
    Aber stream scheint nicht NULL zu sein, falle da mal nicht in die IF-Condition rein.

    Des weiteren scheinen Codestücke wie
    Code:
    system("id > /data/local/test");
    Auch nicht zu funktionieren....

    Weiß da wer Bescheid?
     
    Zuletzt bearbeitet: 04.05.2011
  11. htcdesiree, 04.05.2011 #11
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    EDIT:

    Ich hab die errno vergessen, ich bekomme:
    Eingaben sind folgende:
    bzw.
    Er scheint die Datei nicht zu finden, obwohl die Pfade doch passen?
    Überseh ich hier was?

    EDIT:
    und ich hab mal folgenden Code dazu gelegt:
    Code:
    char * pPath;   
    pPath = getenv ("PATH");   
    if (pPath!=NULL)     
    printf ("The current path is: %s",pPath);
    
    und bekomme:
    RE-EDIT:
    und wenn ich über getcwd() den aktuellen Pfad suche, bekomme ich:
    Hoffe jemand kann helfen...

    Danke...
     
    Zuletzt bearbeitet: 04.05.2011
  12. htcdesiree, 05.05.2011 #12
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Push
     
  13. htcdesiree, 07.05.2011 #13
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    kann wirklich niemand helfen?
     
  14. XPosition, 08.05.2011 #14
    XPosition

    XPosition Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    24.02.2011
    Falls stream != NULL ist wird die errno schon vorher gesetzt.

    Geht in dem Programmverzeichnis "sh -c ls" ?
    Geht es als root ?

    Sonst liegt es wohl an der toolchain.
    Schon mal das ndk standalone test Programm probiert ?
    Falls das geht einfach dein source code reinkopieren.
     
  15. htcdesiree, 09.05.2011 #15
    htcdesiree

    htcdesiree Threadstarter Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    0
    Registriert seit:
    25.04.2011
    Wie gesagt, die Errno ergibt:
    ergibt:
    Funktioniert also tadellos...

    Wo finde ich das ndk standalone test Programm?


    Schöne Grüße
     
  16. XPosition, 09.05.2011 #16
    XPosition

    XPosition Neuer Benutzer

    Beiträge:
    20
    Erhaltene Danke:
    1
    Registriert seit:
    24.02.2011
    android-ndk-r5b/tests/run-standalone-tests.sh
    android-ndk-r5b/tests/standalone/test-basic-c++/test_basic_exceptions.cpp
     
  17. ramdroid, 29.05.2011 #17
    ramdroid

    ramdroid Android-Experte

    Beiträge:
    644
    Erhaltene Danke:
    89
    Registriert seit:
    20.10.2010
    Falls noch jemand Probleme hat... ooookay.... die toolchain von mir war wirklich Müll... sorry für die Verwirrung :winki:

    Hatte eben selbst Probleme mit einem Projekt das mir unfähig war den Inhalt eines bestimmten Verzeichnisses auszugeben.

    Habe also das run-standalone-tests.sh für mein Projekt angepasst und damit gebaut --> funktioniert :D
     

Diese Seite empfehlen