2

ジャック(Linux用のオーディオサーバー)に関するこの入門チュートリアルに従おうとしています。チュートリアルでは、著者はジャックpkg-configを見つけるためにcflagsandを使用する必要があることを説明し、コマンドを次のようにします。libsgcc

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

pthread が何かはわかりませんが、dl は dsp-loader であり、rt はリアルタイムと関係があると思います。と呼ばれるいくつかのディレクトリを検索しましたが/lib、これらの他のライブラリについて何も見つけていないため、それらが私のマシンに存在するとは思いません。pkg-configしかし、呼び出してもそれらについて何も言及されていないのは奇妙に思えます。これらのライブラリを見つけるにはどうすればよいですか? それとも私は間違った道を進んでいますか?

4

1 に答える 1

4

リンク コマンド ラインが間違っています。代わりに次のコマンドを試してください。

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

コマンド ラインでのアーカイブ ライブラリの順序は重要です。

于 2013-03-03T05:49:06.467 に答える