我一直在试着弄清楚如何用boost regex编译我的应用程序。
我在centos 5上安装了来源。
g++ -lboost_regex -o my_app my_app.c $(mysql_config --libs --cflags)
它编译没有任何错误,但是当我执行它时:
error while loading shared libraries: libboost_regex.so.1.46.1: cannot open shared object file: No such file or directory
该文件的位置为:
/usr/local/lib/libboost_regex.so.1.46.1
有人遇到过同样的问题吗?
答案 0 :(得分:3)
您是否尝试过LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH your_program
以确定它知道在哪里可以找到共享对象?您可以使用-Wl,-R/usr/local/lib
链接设置路径。
编辑:更清楚的是,当您链接代码时,链接器会将RPATH和RUNPATH嵌入到二进制文件中。这些值告诉运行时加载程序在哪里可以找到所需的共享对象。
如果您将-Wl,-R/usr/local/lib
添加到链接命令中,该命令应该导致它嵌入该目录,并在加载程序时始终检查它。
答案 1 :(得分:0)
试试这个。
$ LD_LIBRARY_PATH=/usr/local/lib:LD_LIBRARY_PATH
$ export LD_LIBRARY PATH
现在试着告诉我们会发生什么。