错误日志:symbol lookup error: /lib/libgdal.so.26: undefined symbol: sqlite3_column_table_name

Reference:

  1. gazebo: symbol lookup error: /usr/lib/libgdal.so.1: undefined symbol: sqlite3_column_table_name

个人感觉一般出现这种问题,一般都是安装 conda 环境后,编译时使用的环境不一致所造成的。

这里报错的位置是 /usr/lib/libgdal.so.1,但报错信息主要与 sqlite3_column_table_name 有关。

这个问题是因为安装 sqlite3 的时候没有把 sqlite3_column_table_name 相关函数编译进来,如果之前是使用 ubuntu 上的 apt 软件包安装的,默认是没有编译这个函数的。

解决方式

直接官网下载:https://www.sqlite.org/download.html

对应压缩包:sqlite-autoconf-3450200.tar.gz

安装:

  1. 解压:

    tar -xvf sqlite-autoconf-3450200.tar.gz

  2. 进入目录:

    cd sqlite-autoconf-3450200.tar.gz

  3. 编辑 gedit sqlite3.c,在宏定义中加上:

    #define SQLITE_ENABLE_COLUMN_METADATA 1

  4. 重新编译

    ./configure
    make
    sudo make uninstall
    sudo make install

路径 /usr/local/lib/libsqlite3.so.0 下的即得到了更新,再次运行前面报错指令,即可正常使用。

### 解决方案 当遇到 `symbol lookup error` 和 `undefined symbol: plt_ge_beginJob` 错误时,这通常意味着程序尝试访问的符号在共享库中不存在或无法找到。对于特定于 `libAIPlatform.so` 的情况,以下是可能的原因和解决方案: #### 可能原因分析 1. **版本兼容性问题** 动态链接库文件可能存在不同版本之间的不匹配。如果应用程序期望的是某个具体版本中的函数签名,而实际加载的库提供了不同的实现,则会出现此类错误。 2. **依赖关系缺失** 库之间存在复杂的相互依赖关系。某些情况下,虽然主要的目标库已安装,但是其所需的其他辅助库并未正确配置或更新到适当版本。 3. **编译环境差异** 如果目标平台与开发环境中使用的工具链有显著区别(比如操作系统内核版本、glibc 版本等),也可能引发类似的未定义符号问题。 4. **路径设置不当** 系统未能正确识别并查找所需库的位置,可能是由于 LD_LIBRARY_PATH 或者其他的环境变量配置失误造成的。 #### 推荐处理方法 为了修复这个问题,可以采取以下几个措施之一来解决问题: - **确认库的存在性和完整性** 验证 `libAIPlatform.so` 文件确实存在于系统的标准搜索路径下,并且该文件本身没有损坏。可以通过命令行工具如 `ldd` 来查看具体的依赖项及其状态: ```bash ldd /path/to/libAIPlatform.so | grep 'not found' ``` - **检查库版本一致性** 对比当前系统上可用的库版本号以及应用所期待的具体版本需求。必要时升级或降级相关软件包以确保一致性的满足。 - **重新构建项目** 若条件允许的话,考虑获取源码并在本地环境中按照官方文档指导完成一次完整的编译过程。这样不仅可以获得最新版的支持特性,还能有效规避因预编译二进制带来的潜在风险。 - **调整环境变量** 修改 `.bashrc`, `.zshrc` 或其它 shell 初始化脚本来包含必要的自定义库目录至 `LD_LIBRARY_PATH`. 这样做可以让运行时解析器更容易定位到正确的库位置. ```bash export LD_LIBRARY_PATH=/custom/path:$LD_LIBRARY_PATH source ~/.bashrc # or .zshrc depending on your shell ``` - **使用 Conda 创建隔离环境** 类似于 Git Clone 所提到的情况[^2],创建一个新的 conda 虚拟环境可能会帮助避免全局范围内存在的冲突。通过指定渠道安装特定版本的 Python 包和其他依赖项能够提供更加稳定的执行环境。 ```yaml name: ai_platform_env channels: - defaults dependencies: - python=3.x - numpy - scipy - matplotlib - ... prefix: ~/miniconda/envs/ai_platform_env ``` 之后激活新环境并通过 pip 安装额外的需求组件。 ```bash conda activate ai_platform_env pip install path_to_requirements.txt ``` 以上建议旨在为用户提供一套全面排查思路和技术手段集合,以便更有效地应对由动态链接引起的各种挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泠山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值