2013-03-03 3 views
2

Я пытаюсь следовать this вводное руководство по гнезду (аудио сервер для Linux). В учебнике, автор объясняет, что вы должны использовать pkg-config найти cflags и libs для домкрата, делая gcc команду:undefined ссылка на `jack_client_close`, и др.

gcc -o simple_client `pkg-config --cflags --libs jack` simple_client.c 

, который дает выход:

/tmp/ccyuOC0u.o: In function `signal_handler': 
simple_client.c:(.text+0x16): undefined reference to `jack_client_close' 
/tmp/ccyuOC0u.o: In function `process': 
simple_client.c:(.text+0x6f): undefined reference to `jack_port_get_buffer' 
simple_client.c:(.text+0x87): undefined reference to `jack_port_get_buffer' 
/tmp/ccyuOC0u.o: In function `main': 
simple_client.c:(.text+0x25b): undefined reference to `sin' 
simple_client.c:(.text+0x2c1): undefined reference to `jack_client_open' 
simple_client.c:(.text+0x372): undefined reference to `jack_get_client_name' 
simple_client.c:(.text+0x3b1): undefined reference to `jack_set_process_callback' 
simple_client.c:(.text+0x3ca): undefined reference to `jack_on_shutdown' 
simple_client.c:(.text+0x3ee): undefined reference to `jack_port_register' 
simple_client.c:(.text+0x419): undefined reference to `jack_port_register' 
simple_client.c:(.text+0x475): undefined reference to `jack_activate' 
simple_client.c:(.text+0x4c5): undefined reference to `jack_get_ports' 
simple_client.c:(.text+0x514): undefined reference to `jack_port_name' 
simple_client.c:(.text+0x52c): undefined reference to `jack_connect' 
simple_client.c:(.text+0x56e): undefined reference to `jack_port_name' 
simple_client.c:(.text+0x586): undefined reference to `jack_connect' 
simple_client.c:(.text+0x5ba): undefined reference to `jack_free' 
collect2: ld returned 1 exit status 

Я не очень опытный, используя gcc или писать программы c вообще (большинство моих опытов было с javascript, clojure, java, python и php). То, что я собираю из этого, и мои исследования в нем - это то, что некоторые библиотеки отсутствуют или связаны неправильно (не уверены, какие).

Так просто работает pkg-config --cflags --libs jack на моей машине, я получаю:

-ljack 

В учебнике, указанным выше, автор демонстрирует тот же метод подбирая эти библиотеки должны быть связаны для домкрата, но его результат выглядит следующим образом :

-ljack -lpthread -ldl -lrt 

Не уверен, что это потоковой, но я думаю, что нисходящая дсп-погрузчик, и к.т. имеет какое-то отношение в реальном времени. Я искал в нескольких каталогах, называемых /lib, и ничего не нашел для этих других библиотек, поэтому я не думаю, что они существуют на моей машине. Тем не менее, мне кажется странным, что вызов pkg-config не упоминает о них. Как мне найти эти библиотеки? Или я ошибаюсь?

+0

Работает ли эта команда: 'gcc -o simple_client $ (pkg-config --cflags --libs jack) -ljack -lpthread -ldl -lrt simple_client.c'? – Tuxdude

+0

, к сожалению, не – tjb1982

+0

вы не можете редактировать проводку с ошибками, которые вы получаете при запуске указанной команды gcc? Было бы полезно проинформировать, что происходит неправильно. – Tuxdude

ответ

4

Ваша команда ссылка линии неправильно, попробуйте это вместо:

gcc -o simple_client simple_client.c `pkg-config --cflags --libs jack` 

Порядок архивных библиотек в командной строке matters.