glib:windows下基于MSYS2环境编译glib2的过程
如果用MSVC编译开源库实在是麻烦,主要的麻烦在于第三方的开源库本身还需要一些依赖库,这些依赖库在windows多数并不提供编译好的二进制版本,所以要先编译安装各种依赖库,比如glib。 安装依赖库有了MSYS2安装依赖库就非常简单了,以下是通过pacman安装所有编译glib所需要的工具和依赖库。 # 安装依赖库和必须的工具
pacman --needed --noconfirm -S automake autoconf make libtool unzip glib2-devel intltool pcre-devel
mingw-w64-x86_64-toolchain mingw-w64-x86_64-pcre
# 可选工具用于生成文档
#pacman --needed --noconfirm -S gtk-doc
下载glib# 从github上下载2.54.3版本的源码
wget https://github.com/GNOME/glib/archive/2.54.3.zip -O glib-2.54.3.zip
# 源码解压缩
unzip glib-2.54.3.zip || exit -1
编译cd glib-2.54.3
# 第一次要执行autogen.sh才会生成./configure,后续可以直接执行./configure来修改编译配置
./autogen.sh --prefix=/your/install/path
# 编译并安装到prefix指定的位置
make install -j8
生成MSVC import library (.lib)问题来了,在MSYS2下编译用的是MinGW编译器,生成的导入库(import library)都后缀是 glib-2.0.lib: libglib-2.0.la glib.def
$(AM_V_GEN) lib.exe -machine:X64 -name:libglib-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/glib.def -out:$@
可以看到Makefile生成 .lib 是调用MSVC的 # 以Visual Studio 2015为例
PATH="/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin":$PATH
glib-2.54.3-x86_64
├── bin
│ ├── gdbus.exe
│ ├── gdbus-codegen
│ ├── gio.exe
│ ├── gio-querymodules.exe
│ ├── glib-compile-resources.exe
│ ├── glib-compile-schemas.exe
│ ├── glib-genmarshal
│ ├── glib-gettextize
│ ├── glib-mkenums
│ ├── gobject-query.exe
│ ├── gresource.exe
│ ├── gsettings.exe
│ ├── gspawn-win64-helper.exe
│ ├── gspawn-win64-helper-console.exe
│ ├── libgio-2.0-0.dll
│ ├── libglib-2.0-0.dll
│ ├── libgmodule-2.0-0.dll
│ ├── libgobject-2.0-0.dll
│ └── libgthread-2.0-0.dll
├── include
│ ├── gio-win32-2.0
│ └── glib-2.0
├── lib
│ ├── charset.alias
│ ├── gio
│ ├── gio-2.0.lib
│ ├── glib-2.0
│ ├── glib-2.0.lib
│ ├── gmodule-2.0.lib
│ ├── gobject-2.0.lib
│ ├── gthread-2.0.def
│ ├── gthread-2.0.lib
│ ├── libgio-2.0.dll.a
│ ├── libgio-2.0.la
│ ├── libglib-2.0.dll.a
│ ├── libglib-2.0.la
│ ├── libgmodule-2.0.dll.a
│ ├── libgmodule-2.0.la
│ ├── libgobject-2.0.dll.a
│ ├── libgobject-2.0.la
│ ├── libgthread-2.0.dll.a
│ ├── libgthread-2.0.la
│ └── pkgconfig
└── share
├── aclocal
├── bash-completion
├── gdb
├── gettext
├── glib-2.0
└── locale
整个安装、下载、编译过程的完整脚本的gitee仓库位置: 参考资料《Compiling the GTK+ (and Clutter) stack using Visual C++ 2008 and later》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在Windows上开发Apple Java Extensions?
- 在Microsoft.EntityFrameworkCore.Tool的DbContextOptionsB
- microsoft-metro – 在ListView上收听click事件
- 有没有Windows shell工具可以保存历史?
- windows – 如何通过命令行在全屏视图中打开pdf
- windows-server-2008-r2 – DHCP预留是否可以使用排除范围内
- Windows是否有可以从C调用的JSON API?
- Windows – 学习MFC编程的先决条件
- windows-server-2008 – 登录类型8(NetworkCleartext)的数千
- windows – goapp serve:无法找到dev_appserver.py
- 使用基于Windows的RADIUS(NPS)的SuperMicro IPMI
- windows – 构建docker镜像时无法npm安装依赖项
- 使用IIS 7.5和Windows 7安装DotNetNuke 5.6.3时出
- windows – 我如何成为一名脚本专家?
- windows – 最快的大型目录/文件夹删除方法
- Windows API一日一练 21 SetWindowLongPtr和GetW
- .net – Windows DPAPI – 如何处理熵?
- windows-phone-7 – 如何降级Windows Phone 8应用
- windows – 如何在dll注入中调用特定函数?
- 搭建window时间服务器: