编译Qt和opencv程序

本文介绍了在Ubuntu 16.04 32位系统中,如何静态编译Qt和OpenCV程序,包括静态链接Qt库、OpenCV库的步骤,以及处理动态链接库的方法。通过修改配置文件、设置环境变量、使用Makefile和pkg-config,确保程序在不同环境中运行。
摘要由CSDN通过智能技术生成

环境:ubuntu16.04 32位+Qt5.5.1+opencv2.4.9
用Qt和opencv编写的程序在Linux下编译打包非常麻烦,特别是静态编译,捣鼓了好几天,有必要记录一下。

关于静态与动态链接

在编译时期(compile time)把相关对象文件与函数库链接成可执行文件,叫静态链接(static link),而用到的函数库叫静态库(static library),Linux下文件名为“libxxx.a”的形式。
在程序运行时期(runtime)再链接组成程序的目标文件就叫做动态链接(dynamic linking),这些目标文件称为动态链接库(dynamic link library,DLL)。Linux下是共享库(Shared Library),文件名为“libxxx.so”的形式。
Qt和opencv默认采取动态链接的方式。

动态链接文件

程序运行需要链接动态库时,编译器会到特定的路径查找库文件,默认路径是:/lib和/usr/lib,可通过一下方式添加路径:
1.修改配置文件/etc/ld.so.conf,直接在文件中添加路径,运行ldconfig。
2.添加环境变量LD_LIBRARY_PATH。
3.编译时直接指定文件。

Makefile参数

INCPATH是指头文件目录,-I也是这个意思。LIBS是指库文件,-L也是这个意思。其中如-ljasper这种参数,-l省略了开头的lib和结尾的.a或.so,即代表了libjasper.so,但不用写路径,而且编译器会自动找库文件(可能不只一个版本)。

静态编译程序

1、编译QT静态库

首先需要下载Qt源码:
qt-everywhere-5.5.1
其他版本也能在上面找到,注意要下载everywhere版本的。
解压,在目录下执行命令:
./configure -static -release -qt-zlib -qt-libpng -fontconfig -qt-xcb -skip qtwebkit -skip qt3d -qt-freetype -qt-libjpeg -nomake examples -qt-sql-sqlite -nomake tests -silent -c++11 -no-qml-debug -prefix /opt/Qt-5.5.1-static

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值