MinGW 编译zlib、libpng、libjpeg、libcurl等(全都是Qt项目)
MinGW
这里使用的是Qt5自带的MinGw版本,将路径D:\Qt\Qt5.1.0\Tools\mingw48_32\bin加到"环境变量"→"系统变量"→"Path"
命令行输入:
|
1
|
gcc -v
|
可看到gcc版本为:gcc version 4.8.0 (rev2, Built by MinGW-builds project)
MSYS
下载地址:http://www.mingw.org/wiki/MSYS
当前版本:1.0.11
一路安装下去即可
zlib
下载地址:http://www.zlib.net/
当前版本:1.2.8
命令行输入:
|
1
2 |
copy win32\makefile.gcc makefile.gcc
mingw32-make -f makefile.gcc |
生成libz.a文件
libpng
下载地址:http://www.libpng.org/pub/png/libpng.html
当前版本:1.6.6
打开scripts/makefile.gcc设置zlib路径:
|
1
2 |
ZLIBINC = ../zlib-1.2.8
ZLIBLIB = ../zlib-1.2.8 |
拷贝scripts/pnglibconf.h.prebuilt到源码目录,改名为pnglibconf.h
命令行输入:
|
1
2 |
copy scripts\makefile.gcc makefile.gcc
mingw32-make -f makefile.gcc |
生成libpng.a文件
libjpeg
下载地址:http://www.ijg.org/
当前版本:9
打开MSYS (rxvt),输入:
|
1
2 3 |
cd /f/mycode/mysvn/jpeg-9
./configure make |
若是出现以下错误:
|
1
2 |
jcapimin.c:127:1: error: conflicting types for 'jpeg_suppress_tables'
jpeg_suppress_tables (j_compress_ptr cinfo, boolean suppress) |
打开jconfig.h,增加以下定义:
|
1
|
#define HAVE_PROTOTYPES 1
|
重新输入:
|
1
|
make
|
在.libs文件夹下生成libjpeg.a文件
libtiff
下载地址:ftp://ftp.remotesensing.org/pub/libtiff
当前版本:4.0.3
编译依赖zlib和libjpeg,打开jpeg-9/jconfig.h,定义如下:
|
1
2 |
#define HAVE_UNSIGNED_CHAR
#define HAVE_UNSIGNED_SHORT |
打开MSYS (rxvt),输入:
|
1
|
./configure --with-zlib-include-dir=/f/mycode/mysvn/zlib-1.2.8 --with-zlib-lib-dir=/f/mycode/mysvn/zlib-1.2.8 --with-jpeg-include-dir=/f/mycode/mysvn/jpeg-9 --with-jpeg-lib-dir=/f/mycode/mysvn/jpeg-9/.libs
|
接着输入:
|
1
|
make
|
在libtiff/.libs文件夹下生成libtiff.a文件
libiconv
下载地址:http://www.gnu.org/software/libiconv/
当前版本:1.14
打开MSYS (rxvt),输入:
|
1
2 3 |
cd /f/mycode/mysvn/libiconv-1.14
./configure make |
在lib/.libs文件夹下生成libiconv-2.dll和libiconv.dll.a文件,这是动态库。
GLEW
下载地址:http://glew.sourceforge.net/
当前版本:1.10.0
打开Makefile,更改SYSTEM变量为:
|
1
|
SYSTEM ?= mingw
|
命令行输入:
|
1
|
mingw32-make -f Makefile
|
在lib文件夹生成libglew32.a、libglew32.dll.a和glew32.dll文件
MinGW使用-lxxx来链接库的时候,搜索库的顺序如下:
|
1
2 3 4 5 6 |
libxxx.dll.a
xxx.dll.a libxxx.a cygxxx.dll (*) libxxx.dll xxx.dll |
测试使用,新建Qt工程,pro内容如下:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
QT += core
QT -= gui TARGET = testc11 TEMPLATE = app # 链接GLEW静态库版本时开启 SOURCES += main.cpp |
main.cpp内容如下:
|
1
2 3 4 5 6 7 8 9 |
#include "GL/glew.h"
#include <QCoreApplication> int main(int argc, char *argv[]) |
编译运行成功,它链接的是libglew32.dll.a,运行需要glew32.dll动态库支持。接下来测试链接静态库,取消pro文件里面的注释,然后将E:\MyControl\glew-1.10.0\lib文件夹下的libglew32.dll.a文件暂时移出此文件夹,以防止被链接到。重新编译运行,此时链接到了静态库libglew32.a文件。
libwebp
下载地址:https://developers.google.com/speed/webp
当前版本:0.3.1
打开makefile.unix文件,注释掉以下四行,如下:
|
1
2 3 4 |
#EXTRA_FLAGS= -DWEBP_HAVE_PNG -DWEBP_HAVE_JPEG -DWEBP_HAVE_TIFF
#DWEBP_LIBS= -lpng -lz #CWEBP_LIBS= $(DWEBP_LIBS) -ljpeg -ltiff #GIF_LIBS = -lgif |
命令行输入:
|
1
|
mingw32-make -f makefile.unix
|
在src文件夹下生成libwebp.a文件
libcurl
下载地址:http://curl.haxx.se/
当前版本:7.33.0
命令行输入:
|
1
|
mingw32-make mingw32
|
在lib文件夹下生成libcurl.a文件
测试静态库使用,新建Qt工程,pro内容如下:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
QT += core
QT -= gui TARGET = testc11 TEMPLATE = app DEFINES += CURL_STATICLIB SOURCES += main.cpp |
main.cpp内容如下:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include "curl/curl.h"
#include <QCoreApplication> int main(int argc, char *argv[]) curl = curl_easy_init(); /* Perform the request, res will get the return code */ /* always cleanup */ QCoreApplication a(argc, argv); |
编译运行,可见打印出了网页源码。
FreeType
下载地址:http://www.freetype.org
当前版本:2.5.0
打开MSYS (rxvt),输入:
|
1
2 3 |
cd /e/mycontrol/freetype-2.5.0
./configure --without-png make |
在objs\.libs文件夹下生成libfreetype.a文件
参考资料:
1.在 mingw 下编译 libHaru http://kingsz1.iteye.com/blog/543787
2.NDK在windows下编译libpng http://www.scottcgi.com/2012/12/31/ndk%E5%9C%A8windows%E4%B8%8B%E7%BC%96%E8%AF%91libpng/
3.mingw_how_to http://www.gaia-gis.it/spatialite-2.4.0/mingw_how_to.html
4.compile libjpeg with mingw http://stackoverflow.com/questions/13087749/compile-libjpeg-with-mingw
5.Using ld, the Gnu Linker https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Using_ld_the_GNU_Linker/win32.html
http://blog.csdn.net/akof1314/article/details/17034887
MinGW 编译zlib、libpng、libjpeg、libcurl等(全都是Qt项目)的更多相关文章
- windows下使用cmake编译zlib与libpng libjpeg
win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/, 选择最新版本的windows版本压缩包,进行下载. jpeg ...
- 使用mingw编译完整Qt5的过程(使用了niXman的msys套装)good
使用mingw编译完整Qt5的过程 坛子里似乎已经有人编译出Qt5了,不过大多有问题,不是缺少opengl就是缺少openssl,还有缺少webkit的,本文提供的仍然不能说是绝对完整的,不过相对以前 ...
- VC++编译zlib
目录 第1章简介 1 第2章版本1.2.3 2 2.1 编译汇编代码 2 2.1.1 32位汇编 2 2.1.2 64位汇编 5 2.2 Visual C++ 6.0 ...
- windows下编译支持https的libcurl
本文参考http://blog.csdn.net/fragmentalice/article/details/39430293特此感谢.公司项目中用到几个http get请求,用的libcurl开源库 ...
- linux下使用mingw编译NSIS-3.03
简述 最近在研究使用NSIS做安装包,语法不算复杂,插件也很多,中文资料也不少,还挺好用的.先后用NSIS做出了安装和卸载需要输入密码,通过自定义页面实现安装时候选择多个目录.安装的时候输入配置文件信 ...
- 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)
转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...
- Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)
Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...
- Windows下MinGW编译Qt4
还真不是吹,这个问题折磨我一天……前些天转载了一篇关于<Eclipse+Qt开发环境设置>和<Eclipse+MinGW+Qt开发环境设置>两片文章,里面讲述了QT的开源版本q ...
- MingW编译virt-viewer
在http://www.spice-space.org/download.html可以下载到windows版本的virt viewer virt-viewer-x86-0.5.7.msi和virt-v ...
随机推荐
- SlidingMenu的编译及使用
1. 在github上有一个效果不错的开源库,SlidingMenu 最新的代码下载下来后,ExampleListActivity项目会报错: No resource found that ...
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
1.原型属性对象于in操作符之in单独使用 有两种方式使用in操作符:单独使用和在for-in循环中使用.在单独使用中,代码如下: function Person(){ } Person.protot ...
- javascript 获取调用属性的对象
最近碰到一个javascript 的小问题,是和闭包有关的,来自cnode 论坛,很有意思. var o = (function() { var person = { name: 'Vincent', ...
- android入门——UI(4)
GridView控件实现菜单 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...
- “Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象
目录: “Zhuang.Data”轻型数据库访问框架(一)开篇介绍 “Zhuang.Data”轻型数据库访问框架(二)框架的入口DbAccessor对象 先来看一段代码 DbAccessor dba ...
- CM 0313 Review
中午无聊看了贴吧,看到有人截图说CM有爱的故事.看到SE03CH13,觉得图有点印象,似乎我很是记得这一集.于是刚才看了一下,嗯,果然记得.是我头一次翻译美剧的时候,7年前. 剧情还可以吧,剧中的Ji ...
- Hibernate学习
一.Hibernate与触发器协同工作 Hibernate与数据库中的触发器协同工作,会造成两类问题 ----触发器使Session的缓存中的持久化对象与数据库中对应的数据不一致:触发器运行在数据库中 ...
- Java中的流程控制(三)
关于Java中的流程控制 关于Java中的流程控制 4.do while语句 do while语句的功能和while语句差不多,只不过它是在执行完第一次循环后才检测条件表达式的值,这意味着包含在大括号 ...
- 【转】Eclipse自动补全的设置方法
转自:http://blog.csdn.net/xiadasong007/archive/2009/11/11/4799715.aspx 打开 Eclipse -> Window -> P ...
- 常用笔记: JS实现VBS当中的Replace
<script> //JS实现VBS当中的Replace,替换全部.方法名大写,区别于原方法,与VBS相类似. String.prototype.Replace = function(ol ...