我正在尝试按照这个关于 jack 的介绍性教程(用于 linux 的音频服务器)。在教程中,作者解释说你应该使用pkg-config
findcflags
和libs
for jack,使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 收集要链接的库的相同方法,但他的输出如下所示:
-ljack -lpthread -ldl -lrt
不确定pthread是什么,但我认为dl是dsp-loader,而rt与实时有关。我在几个名为的目录中进行了搜索,/lib
但没有发现任何其他库,所以我认为它们不存在于我的机器上。但是,我觉得很奇怪,打电话pkg-config
没有提到他们。我应该如何去寻找这些库?还是我走错了路?