• Hi liebe Forumsmitglieder,

    hat jemand einen heissen Tipp wie ich einfach aus Github heruntergeladene Repositories auf meinem Raspberry Pi nutzen kann?
    Bisher bin ich soweit, dass ich mir ein Repository heruntergeladen habe, und cmake und make drüber laufen lassen hab.
    Die Dateien in den Porjekten auf Github sind meistens in 2 Ordnern organisiert mit "src" (den source dateien, sprich dem Code) und einem "include" (mit den header files).


    Jetzt würd ich gern ein solches Projekt einmal einfach nur auf meinem Raspbi kompilieren und schauen ob der Code auch rennt. Ich habs mit gcc versucht, und bekomme immer den Fehler, dass er eine .h Datei nicht findet. Diese ist im zu kompilierenden Code als include enthalten, und liegt eben im include Ordner.

    Ich hab irgendwie das gefühl, dass gcc mit der Ordnerstruktur nicht klar kommt.

    Hat jemand von euch erfahrungen mit Github und dem Raspberry gemacht?
    Bin für jeden Tipp dankbar.

    Viele Grüße,
    Doc8

    Einmal editiert, zuletzt von Doc8 (13. November 2015 um 11:00)

  • Nicht alles, was auf GitHub ist, ist ein Projekt das compiliert werden muss. Und bei denen, die compiliert werden *muessen*, ist das individuell geloest - da gibt es keine simple "so macht man das" Anweisung. Darum zeig uns konkret *welche* Repositories du bauen moechtest, dann kann man sich das mal anschauen. Und framp hat natuerlich recht, konkrete Fehlermeldungen sind von Noeten. "Geht nicht!" hilft nicht.

  • https://github.com/answer17/lidarLite
    hier das Repository.


    lidarLite.c:29:27:fatal error: lidarLite.h: Datei oder Verzeichnis nicht gefunden
    compilation terminated.

    Das ist, was geany mir sagt. Die Frage ist, wie ich dem Compiler sage, wie die Ordnerstruktur ist, bzw dass die .h datei ja da ist. Kopieren der .h datei in das selbe verzeichnis bringt mir eine reihe anderer Compilerfehler, leider funktioniert mein Copy und Paste nicht per Remote-Desktop.

    danke für eure antworten.

  • Dann hast du vermutlich cmake falsch ausgeführt. Lösche das Repo nochmal (damit wir definitiv vom selben Stand ausgehen und nicht noch irgendetwas herumfliegt)
    Dann clone das repo: git clone https://github.com/answer17/lidarLite.git
    Dann gehe in das Verzeichnis: cd lidarLite
    Dann rufe cmake auf: cmake . # ja mit --> . <--
    dann rufe make auf: make
    Fertig.

    Das hat übrigens GARNICHTS mit github zu tun, das ist einfach ein CMake-Projekt.Es ist jedoch allgemein sinnvoll und daher üblich header (lib) und Quellcode (src) zu trennen.
    Aber garnichts an deiner Frage hat irgendetwas mit github zu tun.

  • alles klar, habe das Thema umbenannt.

    also jetzt weiß ich, dass cmake und github nicht zusammen hängen.

    Die Schritte habe ich ausgeführt. mein Ziel ist es, am ende eine ausführbare datei zu erzeugen. nachdem ich cmake und make gemacht habe, bekomme ich allerdings keine solche Datei. ich habe zwar die Datei "lidarTest" aber die kann ich nicht ausführen.
    Kannst du mir hier noch weiter helfen? danke für die antwort bisher auf jeden fall.

    edit:
    gibts vielleicht ein Tool, dass mir diese ganzen schritte automatisch ausführt? (ich bin faul was sowas angeht)
    würde gern einfach nur programmieren und auf ein knöpfchen drücken das mir die ausgabedatei automatisch erzeugt. :D

    Einmal editiert, zuletzt von Doc8 (13. November 2015 um 11:28)

  • Wenn du C/C++ programmieren willst, wirst du dich mit build-systemen wie cmake & co anfreunden muessen. Faulheit hin oder her. Du kannst geany so konfigurieren, dass du cmake/make aufrufst, aber von alleine rausfinden kann es das nicht.

    lidarTest ist das executable, und das sollte auch laufen. Was fuer Ausgaben ergeben "ls -alF lidarTest" und "file lidarTest"? Wie versuchst du das auszufuehren?

  • Naja, das ist eine Bibliothek. Da kommt keine ausführbare Datei raus (außer möglicherweise Tests wie hier der Fall) Bibliotheken muss man verwenden. Das kannst du nun damit tun. In den Tests kann man oftmals Beispiele finden, wie man es verwende kann.

    Gibt es ein Tool um das ganze zu automatisieren? *g* Das sind schon Tools dafür.
    make ist ein Tool um die Compileraufrufe zu automatisieren, ansonsten müsstest du ersu compilieren mittels gcc (oder ähnlichem), dann linken. Und das nur in einem einfachen Fall, da kann noch wesentlich mehrkommen.
    cmake ist ein Tool um das make-file,also die Anweisungen für make automatisch auf Grundlage der tatsächlichen Situation inklusive Abhängigkeiten etc. erstellt. Ansonsten würdest du das alles manuell eintragen müssen. (Eine bekannte Alternative zu cmake ist "autotools" die man mit ./configure aufruft).
    Was du natürlich machen kannst ist, ein shellscript zu erstellen:

    Bash
    #!/bin/sh
    mkdir build
    cd build
    cmake .
    make
    cd ..

    Ungetestet!!! Nur mal so runtergeschrieben. Mal einen build-Ordner hinzugefügt um mehr Ordnung zu schaffen, wenn das schon automatisch passieren soll ist Ordnung immer gut.

    Das git-Zeug zu automatisieren macht wenig Sinn, denn du hast den Code ja schon... das musst du nur das eine Mal machen.
    Jedoch macht auch das automatische bauen wenig Sinn, denn auch das musst du nur das eine Mal machen... es ist halt eine Bibliothek... wenn die gebaut ist, dann ist die fertig. Das Script dient also mehr akademischen Zwecken. :)

  • Horroreyes: du hast schlicht nicht recht. Das vom TE verlinkte repository hat genau eine CMakeLists.txt, und in der steht ein grosses, freundliches

    Code
    add_executable(lidarTest src/lidarTest.c src/lidarLite.c include/lidarLite.h)

    Das ist also sehr wohl ein executable. Ein Bibliothekstarget gibt es nicht, bei nur zwei Files kann man die natuerlich auch einfach in sein eigenes Projekt uebernehmen.

    Und dein Skript ist auch fehlerhaft, weil du im build-ordner cmake aufrufst, ohne dabei nach oben zu referenzieren - 'cmake ..' waere richtig.

  • hi,

    habe doch eine ausführbare datei gehabt (genau das testprogramm wie du sagtest).
    also nach cmake und make kam sie doch ausführbar raus, hatte nur einfach druff geklickt. und da passierte nix. aber die datei mit dem befehl ./lidarTest auszuführen hat dann geklappt (nach dem gpio initialisieren).


    Also danke für eure antworten, jetzt ist mir klarer wie ich repositories nutze. bin halt nicht wirklich geübt in linux, und noch ein bisschen weniger im raspberry. sind so feinheiten mit ausführen etc.
    hoffe der thread bringt dem ein oder anderen auch was.

    Viele Grüße.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!