求助 protobuf 库链接问题

295 天前
 dy416394356y78
同样的项目,在另一台电脑上每次编译都失败,报这个错误

/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 上不行

跪求各位大佬,已经困扰两天了,查了不少资料都没说到点子上
1199 次点击
所在节点    Linux
4 条回复
flax5a98aa2
295 天前
你安装 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
295 天前
我的 protobuf 项目使用的版本是 3.19.1.0 ,能确定是版本对的,因为这些三方库我们都是另建仓库保存的,我试试大佬说的这个办法,不过我们用的是 ubuntu 的
tangtang369
295 天前
交叉编译的时候把 install 目录设置到 /usr/lib 不要真的 install 编译完把库放 /usr/lib
dy416394356y78
293 天前
@tangtang369 但是我用自己的工具链编译,他也会在系统的/usr/lib 里面找库吗,因为在我的另一台电脑中/usr/lib 下并没有 protobuf 库,仍可以编译通过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1020045

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX