4

共有ライブラリを構築しようとすると、次のエラーが発生します。

libavformat.so: シンボル av_dup_packet@LIBAVFORMAT_52 のバージョン ノードが見つかりません

ld: 動的セクション サイズの設定に失敗しました: 値が正しくありません

このエラーの意味を知っている人はいますか? ホストは i586-linux ターゲットは arm-linux

編集:解決済み、コメントを参照

4

4 に答える 4

3

インライン アセンブリ ディレクティブが原因でした.symver。私の解決策は、生成された config.h を手動で変更して、バージョン ノード シンボルを無効にすることでした。

internal.hの 214 ~ 223 行を確認してください。

于 2010-06-28T14:59:30.127 に答える
1

ああ、関数は 2009 年 4 月に からlibavformat/util.cの新しいファイルに移動されましたlibavcodec/avpacket.c。internal.hのコメントには、次のように明示的に記載されています。

関数をあるライブラリから別のライブラリに移動する場合、バイナリ互換性を維持するためにラッパーを元の場所に保持する必要があります。

ただし、関数がライブラリ間で移動された場合、バイナリ互換性を維持することは不可能です。

このバグは、1 年以上前にChromium プロジェクトで報告されたことに注意してください。

ところで、config.h手動で編集する必要はありません。実行できます./configure --disable-symver

于 2011-12-06T16:15:48.827 に答える
0

これを私に指摘するのに他の誰かが必要だったので、私のような他の人がオグニアンの答えを理解できるように、ここに載せたほうがいいと思いました:

config.hこれは、実行後に編集./configureし、SYMVER関連するエントリを 0 に設定することに変換されます。

#define HAVE_SYMVER 0
#define HAVE_SYMVER_GNU_ASM 0
#define HAVE_SYMVER_ASM_LABEL 0
于 2011-12-06T04:40:11.697 に答える