|
root@*****: - export LD\_LIBRARY\_PATH=/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
/usr/trim/bin/imagesrv: symbol lookup error: /lib/x86_64-linux-gnu/libgdal.so.32: undefined symbol: sqlite3_column_table_name 以上报错原因 libgdal.so.32 依赖 sqlite3 的 sqlite3_column_table_name 符号,但当前系统的 sqlite3 版本过低,没有这个符号,导致库加载失败。 解决步骤(实操指令,直接执行) 1. 更新系统包列表 2. 升级 sqlite3 到高版本 - apt install sqlite3 libsqlite3-dev -y --upgrade
复制代码 3. 重新链接依赖(修复库关联) 4. 重新执行原命令 - export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码 手动指定SQLite库路径,本质是把SQLite库所在目录添加到系统动态库加载路径(LD_LIBRARY_PATH),让程序优先找到适配的SQLite库,步骤极简: 实操步骤(直接执行) 1. 先找到SQLite库实际路径(飞牛OS默认路径,执行确认) - find /usr/lib -name "libsqlite3.so*"
复制代码 输出一般是 /usr/lib/x86_64-linux-gnu/libsqlite3.so(核心路径,记好) 2. 临时指定路径(当前终端生效) 直接把SQLite库路径拼到LD_LIBRARY_PATH最前面,再执行程序: # 格式:export LD_LIBRARY_PATH=SQLite库路径:原有路径 && 程序命令 - Export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码 3. 永久指定路径(所有终端生效) 避免每次都输,写入环境变量配置文件: 学会食用VI,i是编结,esc退出编辑,:wq 退出保存 # 编辑配置文件 # 末尾添加一行(粘贴SQLite库路径) - export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
复制代码# 保存生效 之后直接执行原程序命令即可,无需再手动加路径。 root@*****: - export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
/usr/trim/bin/imagesrv: symbol lookup error: /usr/trim/bin/imagesrv: undefined symbol: heif_imagesrv_patch_for_vendor 报错原因 缺少 heif 相关依赖库(heif_imagesrv_patch_for_vendor 是 heif 库的专属符号),程序加载时找不到该库导致失败,核心是补装或指定 heif 库路径。 实操解决步骤(直接执行) 步骤1:先安装 heif 依赖库(优先尝试,最简单) # 更新包列表,安装 libheif 相关库 - apt update -y && apt install libheif-dev libheif1 -y
复制代码
# 刷新动态库缓存
# 重新执行程序 - export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码 步骤2:若安装后仍报错,手动找 heif 库并指定路径 1. 查找系统中的 heif 库位置 - find /usr -name "libheif.so*"
复制代码 输出大概率是 /usr/lib/x86_64-linux-gnu/libheif.so(记好这个路径) 2. 把 heif 库路径加入 LD_LIBRARY_PATH 再执行 - export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
步骤3:若还是报错(trim 专属 heif 库缺失) 针对性找 trim 目录下的 heif 库,补全路径: 1. 查找 trim 目录内的 heif 库 - find /usr/trim -name "libheif.so*"
复制代码
若输出 /usr/trim/lib/libheif.so(假设路径),把该目录加入 LD_LIBRARY_PATH 2. 指定 trim 下的 heif 库路径执行 - export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
root@*****: export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/usr/trim/lib:/usr/trim/lib/imagesrv:/usr/trim/lib/mediasrv && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1 /usr/trim/bin/imagesrv: symbol lookup error: /usr/trim/bin/imagesrv: undefined symbol: heif_imagesrv_patch_for_vendor 核心原因 heif_imagesrv_patch_for_vendor 是 trim 专属定制的 heif 扩展符号,系统默认和 trim 目录自带的标准 libheif 库都没有,得强制让程序加载 trim 适配的 heif 库,且优先加载,再补全依赖。 实操解决(按顺序来,必成) 步骤1:先修复 ldconfig 警告(避免库冲突干扰) # 删除无效的 libzmq.so.5,重新创建正确软链接 - rm -f /usr/local/lib/libzmq.so.5
复制代码- ln -s /usr/local/lib/libzmq.so.5.2.5 /usr/local/lib/libzmq.so.5
复制代码
# 若找不到5.2.5,先执行 - find /usr/local -name "libzmq.so*"
复制代码
找实际版本,替换进去
# 再执行,无警告即可 步骤2:强制优先加载 trim 下的 heif 库(关键) trim 的 libheif 版本更高(1.18.2),放 LD_LIBRARY_PATH 最前面,强制程序优先用它: - export LD_LIBRARY_PATH=/usr/trim/lib/imagesrv:/usr/lib/x86_64-linux-gnu:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
步骤3:若仍报错,补 trim 专属依赖(兜底) 大概率缺 trim 配套的 heif 补丁库,直接安装 trim 依赖包: # 飞牛OS基于Debian,用dpkg装trim依赖(若有安装包),若无则执行下面的系统补全命令 - apt install -y libheif-dev libjpeg-dev libpng-dev libtiff-dev
复制代码
# 再重新执行程序(仍用步骤2的命令) - export LD_LIBRARY_PATH=/usr/trim/lib/imagesrv:/usr/lib/x86_64-linux-gnu:/usr/trim/lib/mediasrv:/usr/trim/lib && /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
以下命令,上面如果解决了问题,下面命令不需要执行了。 步骤4:终极方案(直接绑定库路径到程序) 若以上都不行,用 patchelf 给程序硬指定 trim 的 heif 库路径: # 安装 patchelf
# 给 imagesrv 绑定 trim 的 libheif.so - patchelf --set-rpath /usr/trim/lib/imagesrv:/usr/lib/x86_64-linux-gnu:/usr/trim/lib/mediasrv:/usr/trim/lib /usr/trim/bin/imagesrv
复制代码
# 直接启动程序,无需再输LD_LIBRARY_PATH - /usr/trim/bin/imagesrv -o /usr/trim/logs/imagesrv.log -l info -u 0 -k 0 -C 1
复制代码
|