我正在编译找到here的程序,并且在运行时我收到错误:
以下是我编译它的方法:
$ g++ -I/home/jpthomps/Desktop/pl-6.0.2/src main.cpp -L/usr/local/lib/swipl-6.0.2/lib/x86_64-linux -lswipl
main.cpp: In function ‘int main()’:
main.cpp:8:39: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
main.cpp:20:22: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
然后当我尝试运行已编译的程序时:
$ ./a.out
./a.out: error while loading shared libraries: libswipl.so.6.0.2: cannot open shared object file: No such file or directory
我是否需要在.cpp文件中添加一些东西来告诉它libswipl.so.6.0.2文件的位置?
答案 0 :(得分:1)
您看到的问题与正在运行的a.out
无法找到您的动态库有关。有几种与系统相关的方法来处理这个问题。例如,在Linux you can set LD_LIBRARY_PATH
上包含libswipl.so.6.0.2
所在的目录。
static const char * av[] = {"calc.pl", NULL};
....
const char * expression = "pi/2";