linux totaler newbie. frage zum compilieren, linken unter linux
-
Hi!
ich bin linux-mässig der totale anfänger und hab ein paar totale anfängerfragen bzgl. programmieren, compilieren und linken unter linux (Suse 10.0 OSS)
ich hab mir die codeblocks-IDE als rpm runtergeladen und installiert (Anjuta funktioniert nicht richtig...)
funktioniert auch alles ganz gut, aber jetzt wirds kompliziert:
ich möchte was audiomässiges programmieren mit alsa (ne audioschnittstelle von linux), hab auch alle alsapakete mit Yast installiert, die dafür nötig sind (devel), ein gutes tut dazu gefunden und versucht das erste beispiel-prog zu kompilieren und dabei haufenweise fehlermeldungen bekommen in der art "undefined reference to snd_bla_bla..."ich bin nicht gut im kompilieren ausserhalb von IDE´s, aber ich denke mal, das der linker allerlei dinge nicht finden kann, und ich irgendwo bei build options wahrscheinlich angeben muss, wo er bestimmte librarys von alsa finden kann, oder?
bloss, wo find ICH die? es gibt soviele lib dirs unter linux (und bin dirs, und sbin dirs und usr dirs) dass ich echt langsam stinkig werde! wer soll denn da noch durchblicken?
wie kann ich rausfinden, ob die nötigen libs wirklich installiert wurden und wohin?
oder wie geht man da überhaupt vor?
-
prokaion schrieb:
oder wie geht man da überhaupt vor?
Hi,
bei fast allem unter Linux reicht folgendes:./configure
make
make installDanach müsste das gewünschte Programm benutzbar sein.
WEnn was nicht da ist, dürfte eigentlich ./configure ne relativ informative Fehlermeldung ausspucken.MfG
Alexander Sulfrian
-
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 danngcc -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...
-
hier die hauptseite:
http://www.alsa-project.org/documentation.php#0.9doc
hier die tuts:
http://www.suse.de/~mana/alsa090_howto.html
http://equalarea.com/paul/alsa-audio.htmlmfg