You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行编译后的可执行文件时出现libpqxx-6.2.so共享库加载错误

解决运行时找不到libpqxx共享库的问题

运行编译后的可执行文件./test_pq时出现如下错误:

./test_pq: error while loading shared libraries: libpqxx-6.2.so: cannot open shared object file: No such file or directory

编译和链接过程无异常,但运行时动态链接器无法找到libpqxx-6.2.so——这是因为编译时通过-L/opt/bb/lib64告诉链接器库的位置,但运行时动态链接器默认只搜索系统标准库目录,你的库所在的/opt/bb/lib64不在默认搜索列表中。

以下是几种可行的解决方法:

方法1:临时设置环境变量

运行前通过LD_LIBRARY_PATH指定库路径,让动态链接器能找到目标库:

export LD_LIBRARY_PATH=/opt/bb/lib64:$LD_LIBRARY_PATH
./test_pq

该方式仅在当前终端会话生效,重启后需要重新设置。

方法2:永久配置系统库搜索路径

系统级配置(所有用户生效)

  1. 在/etc/ld.so.conf.d/目录下创建新的配置文件:
echo "/opt/bb/lib64" | sudo tee /etc/ld.so.conf.d/bb-libs.conf
  1. 更新动态链接器缓存:
sudo ldconfig

用户级配置(仅当前用户生效)

编辑用户主目录下的~/.bashrc或~/.bash_profile文件,添加以下内容:

export LD_LIBRARY_PATH=/opt/bb/lib64:$LD_LIBRARY_PATH

执行以下命令让配置立即生效:

source ~/.bashrc

方法3:通过CMake设置RPATH(推荐)

修改你的CMakeLists.txt,让可执行文件编译时自带库路径信息,运行时无需依赖环境变量。在add_executable之后添加:

# 获取libpqxx所在的目录
get_filename_component(pqxx_lib_dir ${pqxx} DIRECTORY)
# 设置RPATH
set_target_properties(test_pq PROPERTIES
    INSTALL_RPATH "${pqxx_lib_dir}"
    BUILD_WITH_INSTALL_RPATH ON
)

重新执行cmake ..和make编译后,可执行文件会自动在指定路径搜索共享库。

额外注意

你的CMakeLists.txt中有一处笔误:target_compile_options的目标写为test_pqa,应修正为test_pq,避免编译选项未正确应用:

target_compile_options(test_pq
PUBLIC
    -std=c++17
    -pthread
)

内容的提问来源于stack exchange,提问作者Bhavna Sehgal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:30:05