Linux 基于Poco的二进制文件在运行时找不到库
我使用Poco编写了一个小型HTTPServer应用程序,在运行时出现以下错误: factoryProject>/httpServer./httpServer:加载共享时出错 库:libPocoNet.so.16:无法打开共享对象文件:无 文件或目录 我的库在编译期间成功链接,因为它们位于我在make文件中使用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库添加到该目录中 如何指向自定义库目录,以便
-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