linux totaler newbie. frage zum compilieren, linken unter linux



  • Der Linker sucht keine libraries. Du musst ihm immer explizit angeben, welche libraries er linken soll. Ich kenn mich mit alsa nicht genau aus, aber vermutlich wird es sich um -lalsa oder so handeln.

    Unter Pojekt Einstellungen findet man in der Regel Menüs zum einstellen der Linker Optionen. Ansonsten schau mal in das Handbuch deiner IDE.



  • mmh...
    mit ./configure, make, etc kann ich schon deshalb nix machen, weil codeblocks keine configure datei erzeugt. sowas wird auch nicht erzeugt wenn ich mein test.c-file mit gcc -o test test.c versuche zu kompilieren. nur wenn ich ein project mit anjuta erzeuge, und dort meine test.c-datei reinkopiere kann ich das so machen.

    die einzige zeile die dann beim ausführen von ./configure ziemlich verdächtig aussieht ist:

    checking dynamic linker characteristics... cat: /etc/ld.so.conf.d/*.conf: No suc h file or directory

    kann damit jemand was anfangen? wie kann man das beheben?

    (anjuta will ich ausserdem nicht nehmen, weil da irgendwas bei meiner distro nicht geht. der quellcode wird nur als buchstabensalat angezeigt...)

    @kingruedi
    naja, das problem ist ja das ich nicht weiss, wie die benötigten alsa-libs heissen und wo sie sind! wie kann man das rausfinden?



  • Steh da nichts in deinem Tutorial? Ich glaub es handelt sich um libasound.so. Probier einfach mal -lasound als linker flag.



  • nee, das oder vielmehr die tutorials bleiben da unklar.
    aber ich habs mittlerweile gefunden. nach ewigem suchen und rumprobieren hab ich eine "libalsatoss.so" bei linker eingetragen und damit kompiliert und linkt er was brauchbares zusammen.
    enden libraries immer auf *.so?

    funktionieren tuts zwar immer noch nicht, aber das ist dann so alsa-spezifisch, das ich damit vorläufig hier nicht länger rumnerven will. erstmal weitersehen...

    leider hab ich halt wenig ahnung wie man vom terminal aus kompilert und linkt.
    wie ist das? kompilieren geht mit gcc -o test test.c, oder?
    und wie linkt man dann?



  • gcc -o test test.c
    

    Kompiliert und linkt.
    wen du nur Kompilieren willst dann

    gcc -c test.c
    

    Kurt



  • auf .so enden dynamische libraries. Auf .a statische. Wie gesagt, probier mal libasound.so. Eine library linkt man -l<libraryname>, wobei <libraryname> der teil zwischen lib und der endung ist (lib<libraryname>.so)

    Aber schau am besten mal irgend wie bei Projekt Einstellungen, dort findest du sicher Möglichkeiten um die zu linkenden libraries einzustellen.

    Ein blick in das gcc manual kann auch nie schaden.



  • achso!
    danke!
    und wie verwendet man dan einen linkerflag? (zb -lasound)
    so?
    gcc -o test test.c -lasound

    ??



  • genau so



  • prokain ich vermute du benutzt online tutorials ?
    kannste mal die links posten, weil das würde mich auch interessiern...



  • aha!
    na, danke! wenigstens einige unklarheiten beseitigt!

    wie gesagt in codeblocks hab ichs bei den build options ja schon hingekriegt.
    bloss woher soll man immer die libnamen wissen. diese dokus sind echt hölle unübersichtlich und unzuverlässig! (kommt mir zumindest so vor... 😞 )
    thks again!
    🙂

    @icekeeper
    ich hab die html tuts runtergeladen ich guck mal. kleinen moment...




Anmelden zum Antworten