前阵子,工作原因,需要在win7 64下的msys2来编译glib,下面是一些踩过的坑:

事先声明一下,这些个解决方式及纯粹是为了编译通过,可能有些做法不太适合一些需要正常使用的场合,烦请各位注意下。

  1. 最开始的时候是使用**/usr/bin/python**,来编译的但是这个部分好像不是win32版本的,所以用**/ming32/bin/python**来编译
  2. 编译的时候报错"缺少win32com"
    这个问题困扰了我很久,但是到最后都没有解决问题,使用pip pypiwin32pip pywin32都不行,也不知道是为什么…
    但是在windows下安装python3版本之后,在进到msys2中编译就成功了(难道是因为安装了windows的python3自动补全了?????)
    在安装python3的时候,因为公司电脑是win7 sp1的原因,导致缺少一个升级包,把系统升级打开,更新完所有的包就可以了。
  3. 由于公司办公环境的原因,导致gcc下添加了一个搜索的路径,指向一个不存在的路径,所以就报错。我就是单纯让这个部分编译过去,所以索性自己创建了一个这样的文件夹。
  4. 缺少某些函数,提示undefined referece to 'xxxxx'
    这个部分,主要是因为msys2下一些linux的函数没有。解决方法:
    • 先使用grep在当前目录下的meson.build查找到这个函数
    • 找到对应的头文件.h
    • 看一下是不是可以加宏来去掉这个部分,如果不可以就把这个语句直接注释(反正是为了编译而编译)
  5. 出现一大堆的multiple defintion "g_utf8_skip"类似的错误,解决方法如下:
    • 同样是使用grep ,找到这个函数所在的文件
    • 查看其定义,一般跟随着一些宏
    • 手动将GVAR之类的设置成 extern exclpe(_dllexport)
  6. 提示undefined reference to svprintf,解决方法如下:
    • 使用grep找到这个函数,然后系列索引下去
    • 一般的来说就只需要找到config.h这个文件
    • 添加#define HAVE_GOOD_PRINTF 1
  7. 当test部分的plugin_resource.c报错时,如果在msys2下,运行glib_compile_resource.exe出现....library : ? : load ...具体的忘了…=_=!,解决的方法如下:
    • 打开windows的命令行
    • 运行上面的glib_compile_resource.exe
    • 一般的会提示缺少一些dll文件,把这些个文件复制到_build/gio下面
  8. 当出现can't execute helper program(No such or directory),解决方法就是:
    • _build/glib下的gspawn_win32_helper.exe以及gspwan_win32_helper_console.exe复制到_build/gio路径下面
  9. 最后编译的时候,出现一个类型不匹配的问题

    gint64
    ~~~~~~
    %I64d
    直接把变量强转

    上面就是楼主在编译glib的时候所遇到的一个坑,由于楼主时实习生,到公司就丢一个这种在msys2下编译spice客户端的任务,真的是相当的坑,就是这个glib就耗费两个月的时间,这个过程真的既无聊又痛苦,上面的一些个解决的方式都是一些权宜之计,就是纯粹是为了完成这种的编译任务所形成的结果,如果你是要完全编译,建议还是花点功夫在这个上面。

glib-2.60在win64,msys2下编译的更多相关文章

  1. 在 Windows msys2 下编译 scryer-prolog

    by chesium 2022/7/24 深夜 参考:https://github.com/mthom/scryer-prolog/blob/master/README.md 采用 msys2 环境编 ...

  2. MSYS2环境下编译X265

    HEVC(High Efficiency Video Coding),是一种新的视频压缩标准.可以替代H.264/ AVC编码,使得保持相同质量的情况下,体积减少40%左右.目前有多种实现版本,x26 ...

  3. Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)

    目录 1. 数据资源准备 2. 编译第三方库 3. 编译GDAL 4. 编译OSG 1) CMAKE_INSTALL_PREFIX: 2) BUILD_OSG_EXAMPLES/BUILD_MFC_ ...

  4. MinGW下编译curl-7.60.0时, 发生ERROR_FILE_NOT_FOUND undeclared

    在编译curl-7.60.0时, 遇到ERROR_FILE_NOT_FOUND undeclared 这个情况, 就没法编译成功!! 下载了以往的版本, 发现是从curl-7.59.0版本开始才有 t ...

  5. Windows下编译YouCompleteMe流程

    废话 生命在于折腾. 之前不用这个插件的原因: 因为要使这个插件起作用,前前后后需要下载几百MB(win下更是超过了1GB)的东西,包括了Clang编译器,ycmd的c艹源码还有ycm本身的vim s ...

  6. VS2015下编译64位GDAL总结

    使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下. 以前经常用的通过VisualStudio IDE进行编译的方式现在似乎不 ...

  7. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  8. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  9. Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例

    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...

  10. [转载]linux下编译php中configure参数具体含义

    编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...

随机推荐

  1. Win7下C盘无法创建文件解决办法

    Win7下C盘无法创建文件解决办法: To fix it, just turn off the User Account Control (UAC). In Windows 8, do not tur ...

  2. Qt数据库应用7-导出打印QTableWidget/QTableView数据

    一.前言 本组件的初衷就是造一个轮子,让数据导入导出用法极致简单,几个行数几行代码搞定它,适用大部分的应用场景,这也是本组件和qtxls最大的区别,qtxls的目标是大而全,提供各种xls的接口,至于 ...

  3. Qt编写地图综合应用24-miniblink内核

    一.前言 用Qt做项目过程中,遇到需要用到浏览器控件的项目,可能都会绕不开一个问题,那就是从Qt5.6版本开始mingw编译器的Qt构建套件,不再提供浏览器控件了,之前还可以用webkit控件,这下很 ...

  4. 详解AQS四:ReentrantLock条件队列原理

    ReentrantLock的条件队列是实现"等待通知"机制的关键,之前在<java线程间通信:等待通知机制>一文中讲过了使用ReentrantLock实现多生产者.多消 ...

  5. 手写 PromiseA+ 实现,轻松通过 872 条用例

    手写 Promise/A+ 实现,轻松通过 872 条用例 规范参考:Promise/A+ 规范 - 中文版本 测试工具:https://github.com/promises-aplus/promi ...

  6. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.1版已发布

    关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持 UDP .TCP .WebSocket 三种协议,支持 iOS ...

  7. IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!

    一.本文内容概述 WiFi对于现在的家庭来说,属于司空见惯的上网方式,但很多情况下,家里房间多.空间大.杂物乱的情况下,WiFi的信号就受影响.为什么WiFi信号会受影响?什么情况下该使用何种方式组网 ...

  8. LOL(英雄联盟) API 接口

    /*LOL(英雄联盟) API 接口 By wgscd /*LOL(英雄联盟) API 接口 By wgscd QQ:1009374598 */ GET https://127.0.0.1:58182 ...

  9. org.junit.Assert

    引入包,以下两种方式都是OK的,看个人喜好,我倾向于使用第二种,会更加清晰直观.下面的代码我都会用第二种 import static org.junit.Assert.*; import org.ju ...

  10. Spring Boot 如何使用拦截器、过滤器、监听器

    过滤器的使用 首先需要实现 Filter接口然后重写它的三个方法 init 方法:在容器中创建当前过滤器的时候自动调用 destory 方法:在容器中销毁当前过滤器的时候自动调用 doFilter 方 ...