V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dy416394356y78
V2EX  ›  Linux

求助 protobuf 库链接问题

  •  
  •   dy416394356y78 · 292 天前 · 1196 次点击
    这是一个创建于 292 天前的主题,其中的信息可能已经有所发展或是发生改变。
    同样的项目,在另一台电脑上每次编译都失败,报这个错误

    /usr/local/toolchain/R16/bin/../lib/gcc/arm-openwrt-linux-muslgnueabi/5.2.0/../../../../arm-openwrt-linux-muslgnueabi/bin/ld: cannot find -llibprotobuf.so.3.19.1.0
    collect2: error: ld returned 1 exit status

    查下来都说是库或者软链接的问题,但是我修改了软链接也重新安装了库都没用,由于我是交叉编译的,我可以确定不需要更改我的工具链,因为电脑 A 中的工具链打包下来解压在电脑 B 上的,但是在 A 上可以编译过,B 上不行

    跪求各位大佬,已经困扰两天了,查了不少资料都没说到点子上
    4 条回复    2024-03-04 10:17:40 +08:00
    flax5a98aa2
        1
    flax5a98aa2  
       292 天前
    你安装 protobuf 版本正确吗?如果你的发行版比较老,从包管理器安装的版本也会比较老,这个时候需要自己编译安装对应版本的 protobuf 。

    如果你确定版本没有问题,也将 protobuf 安装到了某个目录,但是编译时仍然找不到 protobuf ,可能需要手动跑一下 ldconfig 。按照 https://man7.org/linux/man-pages/man8/ldconfig.8.html 的说法,ldconfig 会检查 /etc/ld.so.conf ,在我这边( debian )写的是 include /etc/ld.so.conf.d/*.conf ,然后你可以看看这些文件里面写的搜索路径,比较典型的是 glibc 的 /usr/local/lib 。如果你在这些路径里面都看不到你安装的 protobuf 的库路径,就自己照着写个配置文件,将你的路径包含进去,再跑 ldconfig 。
    dy416394356y78
        2
    dy416394356y78  
    OP
       292 天前
    我的 protobuf 项目使用的版本是 3.19.1.0 ,能确定是版本对的,因为这些三方库我们都是另建仓库保存的,我试试大佬说的这个办法,不过我们用的是 ubuntu 的
    tangtang369
        3
    tangtang369  
       292 天前
    交叉编译的时候把 install 目录设置到 /usr/lib 不要真的 install 编译完把库放 /usr/lib
    dy416394356y78
        4
    dy416394356y78  
    OP
       290 天前
    @tangtang369 但是我用自己的工具链编译,他也会在系统的/usr/lib 里面找库吗,因为在我的另一台电脑中/usr/lib 下并没有 protobuf 库,仍可以编译通过
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4448 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:08 · PVG 18:08 · LAX 02:08 · JFK 05:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.