未定义的引用`jack_client_close`,et al

时间:2013-03-03 05:05:56

标签: audio gcc linker jack

我正在尝试关注jack上的this入门教程(适用于Linux的音频服务器)。在本教程中,作者解释说您应该使用pkg-config查找插孔的cflagslibs,并按照以下命令生成gcc命令:

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

在上面引用的教程中,作者演示了用于收集要为jack链接的lib的相同方法,但是他的输出如下所示:

-ljack -lpthread -ldl -lrt

不确定是什么pthread,但我认为dl是dsp-loader,而rt与实时有关。我在几个名为/lib的目录中进行了搜索,并没有为这些其他库找到任何东西,所以我认为它们不存在于我的机器上。但是,对我来说,调用pkg-config并没有提及它们似乎很奇怪。我该如何寻找这些库?还是我走错了路?

1 个答案:

答案 0 :(得分:4)

您的链接命令行错误,请尝试使用此命令:

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

命令行matters上的归档库的顺序。