libav ライブラリの FFT コードを使用しようとしています。コードは LGPL であるため、動的ライブラリとしてリンクする必要がありますが、リンカーはいくつかのシンボルを解決できないようです:
gcc -g -fPIC fft-test.c -I. -L. -lavutil -lavcodec -lm -o fft_test
次のエラーが表示されます。
fft-test.c:319: undefined reference to `ff_fft_init'
ただし、ライブラリの .a バージョンとのリンクは正常に機能します。
gcc -g -fPIC fft-test.c -I. -L. -lavutil -l:libavcodec.a -lm -o fft_test
libavcodec.so ファイルの objdump は、ff_fft_init が定義されていることを示しています。
000000000002f146 l F .text 0000000000000229 ff_fft_init
.a バージョンの objdump も問題ないようです。
00000000000000ed g F .text.unlikely 0000000000000229 ff_fft_init
リンク コマンドでライブラリの順序を入れ替えたり、オプション-Wl,--start-group
と-Wl,--end-group
オプションを使用したりしてみました。運がない。
それで、私はここで何が欠けていますか?何か案は?