0

単純な TCL 拡張機能をロードしようとしていますが、次のエラーが発生し続けます。

ファイル "libfoo.so" をロードできませんでした: ld.so.1: tclsh8.4_64: 致命的です: libfoo.so: オープンに失敗しました: そのようなファイルまたはディレクトリはありません

TCL のマニュアル ページの例を使用しています が、ここで何が間違っているのかわかりません。以下を使用して、Solaris でライブラリをコンパイルしています。

cc -KPIC -c -I/opt/external/tcl-8.5.8/include foo.c
cc -共有 -R/opt/external/tcl-8.5.8/i386/lib -L/opt/external/tcl-8.5.8/i386/lib -o libfoo.so foo.o

誰かが問題をデバッグする方法についてアドバイスしてもらえますか?

4

1 に答える 1

0

ここには 2 つの問題があります。

  1. 渡すライブラリのファイル名には、loadおそらくディレクトリ区切り文字が含まれているはずです。ディレクトリセパレーターが存在する場合、オペレーティングシステムによるライブラリの検索が抑制されます。これは、ライブラリの場所が既にわかっているため、必要な方法です。
  2. loadリンクされたものよりも古いバージョンの Tcl にライブラリを挿入しようとしているようです。(32 ビットのビルドを 64 ビットの実行可能ファイルにロードしようとしている可能性もあります。) それが機能する可能性はほとんどありません。サポートしたい Tcl の最も古いバージョンにリンクします。開発中は、ロードする予定の Tcl の正確なバージョンにリンクするのが最適です。製品版の場合は、詳細についてTcl_InitStubsマンページを参照してください。
于 2012-07-25T08:39:08.650 に答える