3

PortAudioインターフェースを使用するDebianGNU/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

libasound.aあなたはのために持っていません-static、あなたはそれを必要とするでしょう、あるいはあなたはほぼ確実に(おそらくまたはで)-staticから削除することができます。MakefileLDFLAGSCFLAGS

関連する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 に答える
3

コードをコンパイルするには、次のコマンドを使用しました

gcc -o rec_mic rec_mic.c -lasound

独自の静的ライブラリを作成しなくても、完全に機能します。

于 2014-01-14T18:57:09.767 に答える