1. ホーム
  2. C

未定義の `__isoc99_sscanf' への参照

2022-02-08 14:47:12

参考記事 http://www.linuxquestions.org/questions/programming-9/undefined-reference-to-%60__isoc99_sscanf%27-873058/

オリジナルのキーコンテンツです。

<スパン glibc 2.7以前のバージョンがインストールされており、glibc 2.7に対してコンパイルされたライブラリ(ffmpeg?)を使用している場合です。バージョン2.7でglibcに追加された__isoc99_sscanfを使用しています。
<スパン そのシンボルを参照しているスタティックライブラリファイル(*.a)を確認し、再コンパイルする必要があります。コマンド

コード
objdump -t 


ライブラリへのパス


.a | grep -e __isoc99_sscanf

をクリックすると、そのシンボルを参照しているライブラリがわかります。
または、c ライブラリをバージョン 2.7 以降にアップグレードすることも可能です。Debian や Ubuntu を使っている場合は、パッケージのアップグレードが必要です。  libc6-dev  を最低でも2.7にすれば十分です。
<スパン エラーメッセージがバージョン管理されていないシンボルを参照していた場合(つまり、エラーメッセージが __isoc99_sscanf@GLIBC... を参照していなかった場合)、stdargs と GNU sscanf(それらの違いは通常重要ではありません)を使用して __isoc99_sscanf ラッパーを書いて、それをリンクに含めることができます。

<スパン -------------------------------------------------------



エラーです。

未定義の `__isoc99_sscanf' への参照。

<スパン 原因は、このプログラムで使用されている xxx.a や xxx.so などのライブラリの1つが、より高いバージョンの glibc 環境の中でコンパイルされているためです。

回避策は2つあります。

<スパン 1. glibcをバージョン2.7にアップグレードする。

<スパン 2. xxx.aまたはxxx.soを見つけ、我々のシステムで再コンパイルし、それを使用する。