.soファイルのリンカスクリプト? (libc.so) そうですか?

.soファイルのリンカスクリプト? (libc.so) そうですか?

私は現在NAS(Zyxel NSA325)でPythonを実行しようとしています。

私はPython 2.7とpipの実行に成功し、pipを使用してwatchdogモジュールを正常にインストールできました。フォローするこのガイドラインさて、Pythonとpipを実行してみてください。

watchdogモジュールを使用してPythonスクリプトを実行すると、非常に深刻なエラーが発生します。

/usr/local/zy-pkgs/ffproot/ffp/bin/python2.7: '/ffp/lib/libc.so' is not an ELF file

ELFファイルのヘッダーがどのように見えるかを検索してみました。確かにwhichで始まります。したがって、クイックタスクを実行し、結果は次のようになります7f 45 4c 46.ELFcat /ffp/lib/libc.so

/* GNU ld script
 * Use the shared library, but some functions are only in
 * the static library, so try that secondarily. */
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
         "elf32-littlearm")
GROUP ( libc.so.0 uclibc_nonshared.a AS_NEEDED ( ld-uClibc.so.0 ) )

明らかにこれはELFファイルではありません。だから研究するのにもっと時間を費やし、これが次のようになると思いました。リンカースクリプト

しかし、今はアイデアはありません。 .soファイルにリンカスクリプトがあるのはなぜですか?そうなんですか?どうすれば解決できますか?

システムメッセージ:

# uname -a
Linux NSA325-v2 2.6.31.8 #2 Fri Jun 23 11:03:47 CST 2017 armv5tel GNU/Linux

答え1

という名前のファイルがあるからといって、必ずしも.so共有ライブラリである必要はありません。これらのファイルは、(ランタイムではなく)ビルド時にプログラムをリンクするときに使用されます。通常、実際の共有ライブラリへのシンボリックリンクですが、少なくともGNUを使用しているシステムではldリンカスクリプトかもしれません。これは完璧です。最新のglibcベースのシステムを見ると、libc.soそこにもリンカスクリプトがあることがわかります。

これはPython(またはwatchdogモジュール)がlibc.so代わりに探す理由を説明しませんlibc.so.0。 Pythonインタプリタの設定が間違っているか、watchdogモジュールの誤った仮定である可能性があります。今日後で後者を見てみましょう。前者の場合は、質問にリンクされているフォーラムにお問い合わせください。

関連情報