共有ライブラリを構築しようとすると、次のエラーが発生します。
libavformat.so: シンボル av_dup_packet@LIBAVFORMAT_52 のバージョン ノードが見つかりません
ld: 動的セクション サイズの設定に失敗しました: 値が正しくありません
このエラーの意味を知っている人はいますか? ホストは i586-linux ターゲットは arm-linux
編集:解決済み、コメントを参照
共有ライブラリを構築しようとすると、次のエラーが発生します。
libavformat.so: シンボル av_dup_packet@LIBAVFORMAT_52 のバージョン ノードが見つかりません
ld: 動的セクション サイズの設定に失敗しました: 値が正しくありません
このエラーの意味を知っている人はいますか? ホストは i586-linux ターゲットは arm-linux
編集:解決済み、コメントを参照
インライン アセンブリ ディレクティブが原因でした.symver
。私の解決策は、生成された config.h を手動で変更して、バージョン ノード シンボルを無効にすることでした。
internal.hの 214 ~ 223 行を確認してください。
ああ、関数は 2009 年 4 月に からlibavformat/util.c
の新しいファイルに移動されましたlibavcodec/avpacket.c
。internal.hのコメントには、次のように明示的に記載されています。
関数をあるライブラリから別のライブラリに移動する場合、バイナリ互換性を維持するためにラッパーを元の場所に保持する必要があります。
ただし、関数がライブラリ間で移動された場合、バイナリ互換性を維持することは不可能です。
このバグは、1 年以上前にChromium プロジェクトで報告されたことに注意してください。
ところで、config.h
手動で編集する必要はありません。実行できます./configure --disable-symver
。
これを私に指摘するのに他の誰かが必要だったので、私のような他の人がオグニアンの答えを理解できるように、ここに載せたほうがいいと思いました:
config.h
これは、実行後に編集./configure
し、SYMVER
関連するエントリを 0 に設定することに変換されます。
#define HAVE_SYMVER 0
#define HAVE_SYMVER_GNU_ASM 0
#define HAVE_SYMVER_ASM_LABEL 0