便携式批量系统

便携式批量系统

我在服务器上工作(我不是管理员),我必须以.pbs格式运行作业,以便在作业运行时可以断开我的计算机连接。

问题是我无法以 .pbs 格式运行以 .sh 格式运行的相同命令,它显示:

error while loading shared libraries: libftgl.so.2: cannot open shared object file: No such file or directory

该图书馆位于/usr/lib264

我尝试导出这个库但是可能做错了。

具体该怎么做呢?

.sh 和 .pbs 文件

答案1

问题是ld(GNU 链接器)找不到该库,因为该库不在受信任的路径中,也没有通过其他方式ld提供该库的路径。ld

因此您应该使库的路径可供使用ld

由于您没有管理权限,您必须覆盖本地ld设置,这可以通过将路径添加到LD_LIBRARY_PATH环境变量来完成:

printf "export LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH:/usr/lib264\n\"" >>~/.bashrc

并通过source~/.bashrc将更改应用到正在运行的shell:

. ~/.bashrc

使所包含的库在/usr/lib264整个系统内可用的“正确”方法是添加一个.conf包含库路径的文件/etc/ld.so.conf.d/并更新ld缓存。

这需要管理权限,因此不适用于您的情况;不过,我把这个留给其他偶然发现这个答案的人。

首先,应该添加一个.conf包含库路径的文件/etc/ld.so.conf.d/

printf "/usr/lib264\n" | sudo tee -a /etc/ld.so.conf.d/other_libraries.conf

然后,应该运行ldconfig来更新ld缓存:

ldconfig

此后,该库的路径应该可供ld整个系统使用。

相关内容