3

我正在尝试在使用 PortAudio 接口的 Debian GNU/Linux 上创建一个 C 应用程序。为此,我必须使用gcc -lrt -lasound -ljack -lpthread -o YOUR_BINARY main.c libportaudio.a文档编译我的程序。

为此我安装了libasound2-dev,我检查了文件在哪里使用apt-file search libasound.so,这是输出:

lib32asound2: /usr/lib32/libasound.so.2
lib32asound2: /usr/lib32/libasound.so.2.0.0
lib32asound2-dev: /usr/lib32/libasound.so
libasound2: /usr/lib/x86_64-linux-gnu/libasound.so.2
libasound2: /usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
libasound2-dev: /usr/lib/x86_64-linux-gnu/libasound.so

所以应该正确安装libasound,但是当我用这个makefile编译我的程序时:

DMXTest: main.c libdmx.a
    gcc -static -Wall main.c -L. -ldmx -lusb -lrt -lasound -ljack -lfftw3 -g -o main libportaudio.a

我收到以下错误:/usr/bin/ld: cannot find -lasound

如何正确链接此库?

4

2 回答 2

3

To compile my code i used the following command

gcc -o rec_mic rec_mic.c -lasound

and it works perfectly, without create my own static library.

于 2014-01-14T18:57:09.767 回答
3

您没有libasound.afor -static,您将需要它,或者您几乎可以肯定只是-staticMakefile(可能在LDFLAGSor CFLAGS)中删除。

有一个相关的 Debian 错误522544和一个相关的 Ubuntu 错误#993959

您可能可以从源代码构建自己的 libasound,尽管它还使用其他库(特别是libpthread.solibrt.so) ,libdl.so我怀疑它可能会在您静态构建时删除一些功能,尽管它./configure --enable-static在构建时受支持(或 try --enable-shared=no --enable-static=yes)。

FWIW,glibc 维护者“不鼓励”使用静态二进制文件,尽管我不同意......

于 2013-03-09T13:23:29.923 回答