C++项目工程在Linux环境开发、部署和运行问题

9 篇文章 0 订阅

背景

当我们自己开发的项目程序需要在linux上进行部署、调试时,项目代码完整拷贝过去之后,直接运行我们自己的可执行程序,往往提示找不到所相关的.so库,会报错。这是因为,系统只会去默认搜寻目录(/lib/usr/lib)下,以及动态库配置文件(/etc/ld.so.conf/etc/ld.so.conf.d/*.conf)里所列的目录下, 搜索可共享的动态库(格式如lib*.so*),进而创建出动态装入程序*(ld.so)*所需的连接和缓存文件。而我们自己项目所依赖的库路径不在上面几个路径,因此,找不到对应的库文件,所以,需要我们手动将路径添加进去。

问题

将写好的C++项目,在linux环境上部署、联调时,经常会出现如下问题:

error while loading shared libraries: libIce.so.37: cannot open shared object file: No such file or directory

在这里插入图片描述

原因:

可执行程序执行时找不到依赖的动态库。要么是没有这个so文件,要么是文件的路径没有指对

解决方法:

ldd命令查看可执行程序依赖了哪些so库,哪些是找不到的:

ldd FMonitor

在这里插入图片描述

如图所示,显示not found的库都是没有找到的,而在项目的bin目录中是有这些库的,所以需要将自己项目中的这些.so库文件的路径添加到系统默认的库搜索目录。步骤如下:

# 在/etc/ld.so.conf.d目录下创建LiMonitor.conf文件,将该软件依赖的库路径添加进去
echo /home/nsy/Project/LiMonitor/bin/ > /etc/ld.so.conf.d/LiMonitor.conf
# 执行生效
ldconfig

使用ldd命令再次查看程序依赖库寻找情况,如下:

在这里插入图片描述

表明,所有依赖库,已经全部找到,至此,可以执行此应用程序,如下:

在这里插入图片描述

下次,无论哪个用户都可以运行该软件。

补充

补充1
在进行调试时,也可以临时将依赖库路径添加到系统环境,仅在当前终端有效。执行以下命令

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/home/nsy/Project/LiMonitor/bin/

补充2:
从windows 上传文件到linux

# 使用ssh上传文件  -r表传文件
scp -r D:/工作积累/Module/LiMonitor/LiMonitor nsy@192.168.xxx.x:/home/nsy/Project

参考:https://www.cnblogs.com/zakzhu/p/12427512.html

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 人工智能作业基于C++实现的拼音输入法源码+拼音输入法实验报告+项目部署说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 这个文件夹包含了我实现的拼音输入法作业,其中包含五个目录。 + bin/ 目录下包含了项目用到的可执行文件,主要为 `pinyin` 和 `evaluate`,分别为项目的主程序和评估程序; + data/ 目录下包含了项目中用到的输入输出文件; + model/ 目录下包含了项目预先训练好的模型文件; + src/ 目录包含了项目的源代码,其中 `main.cpp` 为主程序文件,`model.cpp` 为模型建立文件,`predict.cpp` 为预测文件; + test/ 目录下是一些开发过程中用到的测试文件。 由于项目中使用到的模型文件太大,无法将其上传到 github 的项目仓库中。我将其保存在了我的云盘中,您可以通过以下命令将其下载到 `model/` 文件夹下: ``` wget https://cloud.tsinghua.edu.cn/f/fce169ed08ec4c0b8187/?dl=1 -O model/posterior3zip2.txt ``` 为了运行项目,您需要使用 Linux 系统,并且在项目的主文件夹下(README.md 所在的文件夹),运行以下命令 ``` bin/pinyin data/test_input.txt data/test_output.txt ``` 该命令会默认使用<strong>三元模型</strong>作为拼音输入法的模型,对于一千条测试语句,该命令大约需要执行两分钟。同时,本项目也支持使用二元模型,您可以通过显式指定 ``` bin/pinyin -n2 data/test_input.txt data/test_output.txt ``` 来完成这一点。显然,也可以使用 `-n3` 来显式指定使用三元模型。 运行完成后,转化的结果被存储在了 `data/test_output.txt` 文件中。本项目还提供了 `evaluate` 命令,来评估转化结果的好坏 ``` bin/evaluate data/test_output.txt data/test_ans.output ``` 该命令会打印转化的字准确率与行准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值