C中Tcl扩展的库路径

C中Tcl扩展的库路径,c,tcl,tk,C,Tcl,Tk,我使用Tcl_CreateObjCommand在C中构建一个名为libA.so的Tcl扩展,C代码从名为libext.so的外部C库调用函数,我应该将libext.so放在哪里,以便Tcl在加载libA时可以找到并加载它。所以使用包安装程序 如果您有一个软件包管理器,您应该用它安装tcl/tk sudo-apt-get-install-tk 或者您可能还需要tk-dev,有时称为tk-devel: sudo-apt-get-install-tk-dev 手动安装 您可以将so手动放在/usr/

我使用Tcl_CreateObjCommand在C中构建一个名为libA.so的Tcl扩展,C代码从名为libext.so的外部C库调用函数,我应该将libext.so放在哪里,以便Tcl在加载libA时可以找到并加载它。所以使用包安装程序 如果您有一个软件包管理器,您应该用它安装tcl/tk

sudo-apt-get-install-tk

或者您可能还需要tk-dev,有时称为tk-devel:

sudo-apt-get-install-tk-dev

手动安装 您可以将so手动放在/usr/local/lib/中的/usr/local库中,并将文件包含在/usr/local/include/中,但如果您有打包系统,请记住不要将其安装在/usr下。 还有一个选项可以将它们放在项目目录下,但是您必须使用LD_LIBRARY_PATH或LD.so.conf帮助查找它们。此外,还必须更新项目的包含路径和库路径。
你从哪里得到libext.so?这是你在别处建立或获得的东西吗?这是我建立的图书馆。似乎除了像/usr/lib这样的标准位置之外,没有放置libext.so的好位置。如果不能,则1将其放在LD_LIBRARY_PATH中不是理想的解决方案的某个位置,或2将其放在已知的某个位置,并在加载libA之前让Tcl包代码dlopen它。因此,您可以使用dlopen Tcl扩展来实现这一点。