TCL加载错误无法加载文件libfoo.so

时间:2012-07-25 00:05:43

标签: tcl

我正在尝试加载一个简单的TCL扩展,但我不断收到以下错误:

couldn't load file "libfoo.so": ld.so.1: tclsh8.4_64: fatal: libfoo.so: open failed: No such file or directory

我正在使用TCL man page中的示例 但我不确定我在这里做错了什么。我正在使用以下代码编译Solaris上的库:

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

有人可以就如何调试问题提出建议吗?

1 个答案:

答案 0 :(得分:0)

这里有两个问题。

  1. 传递给load的库的文件名应该包含目录分隔符。当存在目录分隔符时,这会阻止操作系统搜索库,这就是你想要的东西,因为你已经知道了它的位置。
  2. 您似乎正在尝试将load库转换为旧版本的Tcl,而不是链接到它。 (您可能还尝试将32位版本加载到64位可执行文件中。)消失的 不太可能正常工作。链接您希望支持的最旧版本的Tcl;在开发时,最好通过链接到您要加载的Tcl的确切版本来完成,并且对于生产,您应该看到Tcl_InitStubs联机帮助页以获取详细信息。