关于在Ubuntu打包程序的笔记

用opencv+QT在Ubuntu上写了个小程序,想打包到其他计算机上使用,折腾了一天后发现其实并不需要什么帮助软件,静态库都打包到run文件上了,只需要让Ubuntu链接动态库(.so)就成了

如何知道一个run文件需要什么动态链接库

  • 在该run文件下,使用LDD命令,就可以自动得到所有的依赖动态库,找得到的告诉你位置在哪,找不到的告诉你not found,很好用,很多自动脚本的实质就是自动运行这个,然后把路径复制下来,然后再通过路径复制到某个文件夹内。

如何让Ubuntu加载自定义的动态链接库路径

  • 毕竟你不可能真的把需要的库挨个复制到某个默认动态库路径内,这会导致很多问题。,一般来说是把需要的库都复制到某个文件夹内,然后让Ubuntu自动找到这个文件夹,这样操作容易也不会出问题。

  • 让Ubuntu自定义加载需要的动态链接库的具体的方案是通过在 /etc/ld.so.conf.d/文件下
    创建一下新的.conf文件(实质上在etc文件夹下有个ld.so.conf文件,该文件内的内容是自动加载
    ld.so.conf.d文件夹下后缀为.conf的文件),比如我创建了一个opencv.conf的文件,在文件内写入存放opencv动态链接库的路径(如~/opencv/lib),之后执行
    sudo ldconfig 更新即可。

  • 但是使用opencv需要注意是的,虽然opencv的库基本都在那个你生成的build/lib 文件夹内,但是还有一大堆在opencv安装前就要弄的依赖库…所以直接根据路径复制库是比较好的选项(我的处理方式是照着原有的攻略又安装了一次opencv依赖库,一劳永逸)

另外还有一些关于调试的细节
使用debug模式和release模式,可能会导致输出结果的不同,也别管什么原因(我的原因是release下缺了某个关键的配置文件,在debug模式下我自己复制进去忘记了,够傻吊吧),总之可能会需要在release模式下对程序进行调试,这时候可以同过在pro文件中加入

QMAKE_CXXFLAGS_RELEASE += -O0 -g
QMAKE_CFLAGS_RELEASE += -O0 -g
DEFINES -= QT_NO_DEBUG_OUTPUT  #enable debug output

虽然不知道什么意思,但是很好用,之后便可以在release下debug了

同时如果有空,可以在某些环节出错时候输出一些提示性的bug文字,起码可以帮你快速定位。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值