• symbol lookup error


    环境:redhat enterprise linux 5 (server version) 

    项目中的lib3p目录下放置了sqlite共享库libsqlite3.so

    cmake文件已经指定了lib3p路径

    运行项目生成的可执行文件时报错:

    ./bin/test-slfdb_shell: symbol lookup error: /home/liangxx/sldb/build/sldb/lib/libsldb.so.1: undefined symbol: sqlite3_backup_init

    百度到的结果是可执行文件链接的共享库可能不正确,也就是说链接到的不是lib3p下的libsqlite3.so,而是/usr/lib下的旧版本libsqlite3.so,但是cmake已经正确指定了lib3p路径,所以排除了这个可能。

    那么到底是什么原因呢?从百度中学到一个命令ldd,这个命令可以查看可执行文件链接到的动态库情况,于是我检查了一下:

    可以发现原来可执行文件链接的sqlite共享库命名是libsqlite3.so.0,在lib3p下找不到libsqlite3.so.0命名的共享库,所以转向默认的路径(/usr/lib)去查找,于是就连接到系统自带的旧版本sqlite共享库。

    解决方法很简单,进入到lib3p文件夹下,执行软连接命令生成名字为libsqlite3.so.0的文件:

    重新运行,木有问题了。

  • 相关阅读:
    微信小程序用vant,dialog弹出框
    小程序太阳码 ,不发布也可以测试
    php ,通过password与salt共同来验证登录
    vscode 使用less开发微信小程序
    php命名规范
    61键 如何打波浪线
    php 循环使用
    记一次,物业费时间交集问题
    Mac拖拽文件
    python 支持中文
  • 原文地址:https://www.cnblogs.com/liangxiaxu/p/2908562.html
Copyright © 2020-2023  润新知