Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 基于Poco的二进制文件在运行时找不到库_Linux_Runtime_Poco_Dynamic Linking_Poco Libraries - Fatal编程技术网

Linux 基于Poco的二进制文件在运行时找不到库

Linux 基于Poco的二进制文件在运行时找不到库,linux,runtime,poco,dynamic-linking,poco-libraries,Linux,Runtime,Poco,Dynamic Linking,Poco Libraries,我使用Poco编写了一个小型HTTPServer应用程序,在运行时出现以下错误: factoryProject>/httpServer./httpServer:加载共享时出错 库:libPocoNet.so.16:无法打开共享对象文件:无 文件或目录 我的库在编译期间成功链接,因为它们位于我在make文件中使用-L/some/path指向的特定目录中 我已经阅读了ldconfig命令,它指出它通常在/usr/lib中查找库,但我没有管理员权限将Poco库添加到该目录中 如何指向自定义库目录,以便

我使用Poco编写了一个小型HTTPServer应用程序,在运行时出现以下错误:

factoryProject>/httpServer./httpServer:加载共享时出错 库:libPocoNet.so.16:无法打开共享对象文件:无 文件或目录

我的库在编译期间成功链接,因为它们位于我在make文件中使用
-L/some/path
指向的特定目录中

我已经阅读了ldconfig命令,它指出它通常在
/usr/lib
中查找库,但我没有管理员权限将Poco库添加到该目录中


如何指向自定义库目录,以便ld在运行时加载它

我已经研究了一些可能的解决方案,其中最流行的是to,但是这个解决方案似乎很复杂,我不想向这个通用服务器添加配置文件

对我来说最简单的解决方案是更新以下环境变量:

echo$LD\u库\u路径


可以列出在运行时首先搜索库的目录,在
setenv
命令之后,我有一个工作的HTTP服务器

您最好也将:
-Wl,-rpath,/some/path
传递到程序的链接行,这样它在运行时会显示在该位置,而不是依赖于环境变量。
-L
选项不执行链接时间,
-Wl,-rpath
将其嵌入二进制文件以供运行-time@Petesh很好的建议。实际上我更喜欢这样,因为它将路径的定义引入到makefile中。阅读以下内容后,我将LDFLAGS更新为以下内容:
LDFLAGS=-lPocoNet-lpocutil-lPocoFoundation-lPocoXML-Wl,-rpath=$(LIB_DIR),--启用新的dtags