当我尝试在编译沙盒C程序后运行.out文件时,会出现以下错误:
./sandbox: error while loading shared libraries: libsandbox.so: cannot open shared object file: No such file or directory
我该怎么办?
当我尝试在编译沙盒C程序后运行.out文件时,会出现以下错误:
./sandbox: error while loading shared libraries: libsandbox.so: cannot open shared object file: No such file or directory
我该怎么办?
libsandbox
。事实上,许多使用GNU autotools进行构建配置的自编译库都会遇到这个问题。/usr/local/lib
中(保持此设置默认值有很好的理由,如符合FHS标准)。然而,在某些Linux发行版中(如Ubuntu和ArchLinux),运行时链接器(又名ld.so
)不会搜索/usr/local/lib
以查找共享库,除非通过ldconfig
指定。/usr/lib
的写入权限,只需使用选项--prefix=/usr
和--libdir=/usr/lib
配置libsandbox
可能更方便。或者,您可以在/etc/ld.so.conf.d
中添加一个新的ldconfig
条目,以启用系统级别的/usr/local/lib
库搜索。libsandbox
的作者。libsandbox.so
副本的位置。如果您成功地链接了它,它可能在某个地方。env LD_LIBRARY_PATH=/directory/of/your/libsandbox/copy/ ./sandbox
尝试并查看是否有效。gcc -Wl,-rpath='$ORIGIN'
进行链接可以使libsandbox.so
从可执行文件目录中加载。一个负责LD_LIBRARY_PATH
的包装脚本是另一个解决方案。将libsandbox.so
放入动态链接器可以找到的位置是另一个解决方案。