私は現在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
。.ELF
cat /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モジュールの誤った仮定である可能性があります。今日後で後者を見てみましょう。前者の場合は、質問にリンクされているフォーラムにお問い合わせください。