Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: roxton 30 Září 2015, 09:57:40
-
Píšu v C pro malinu (raspbian), ale většinu kódu nejprve odladím v pohodlí na stanici s Ubuntu. Se standardními knihovnami není sebemenší problém, ale když chci pracovat se zvukovkou (alsa), tak se mi nedaří funkční kód z maliny na Ubuntu (14.04.3, 64 bit) přeložit (nebo asi spíš zlinkovat).
program.c:
#include <alsa/asoundlib.h>
int main()
{
printf( "ALSA sound library: %s\n", snd_asoundlib_version() );
return 0;
}
gcc -lasound program.c
/tmp/ccFiWSuO.o: In function `main':
program.c:(.text+0x5): undefined reference to `snd_asoundlib_version'
collect2: error: ld returned 1 exit status
Kde dělám chybu ? Stejný problém je se všemi metodami snd_xxx.
-
Musis mit prvne zdrojak a pak linkage...
-
Díky za reakci, ale jaký zdroják prosím musím mít ? Na malině jsem doinstaloval balíček libasound2-dev, pak jsem přidal gcc parametr -lasound, a překládám a funguje to.
-
Myslel jsem v parametrech, tj
gcc ./program.c -lasound
A pochopitelne musis mit nainstalovany i asound (bez dev)
-
Děkuji moc za konzultaci.
Problém byl v pořadí parametrů, zatímco na malině funguje
gcc -lasound program.c
i
gcc program.c -lasound
tak na ubuntu funguje jen druhý způsob.
Musím si prostudovat man gcc.
-
Jo jo na pořadí argumentů pozor. To mám třeba problém v Cmake ten samý. Navíc používám Clion a furt přepisuju vygenerovanej texťák, protože oni to generují prý na verzi, kde to funguje a problém je ve verzi a v Cmake. A tudíž maj to pořadí argumentů obráceně, ale mě to na nejnovějších systémech nefunguje bohužel bez zásahu.