我用C++编写了一个.CGI文件。这个二进制文件依赖于一些boost
共享库和其他特定文件夹/usr/local/boost/
中的资源。但是这个CGI无法执行,日志中显示了错误信息。
error while loading shared libraries: libdxxx: cannot
open shared object file: No such file or dire
现在,我已经阅读了很多日志,它们都说我必须在httpd.conf
中设置以下内容,但仍然无法正常工作。
SetEnv LD_LIBRARY_PATH /usr/local/boost:
在我的配置文件中,我在文件末尾设置了这行代码"as it is",而且没有包含在任何
VirtualHost或Directory
部分中。我尝试将其插入到cgi-bin的目录中,但结果仍然相同。 <Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetEnv LD_LIBRARY_PATH /usr/local/boost
</Directory>
我也尝试过(见下文讨论)添加一个.ldconfig的.conf文件,但它仍然无法工作!
#added a file called myconfig.conf conrtaining a line
/usr/local/boost
/etc/ld.conf.d/
ldconfig (as root)
我还看到过这样的说法,httpd
继承了运行它的ROOT用户的环境变量;作为ROOT用户,我调用以下命令来启动Apache,LD_LIBRARY_PATH已经正确设置,但仍然有问题。
/etc/init.d/httpd start
我正在使用Red Hat 6.2操作系统。