Loading

glib-2.60在win64,msys2下编译

前阵子,工作原因,需要在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就耗费两个月的时间,这个过程真的既无聊又痛苦,上面的一些个解决的方式都是一些权宜之计,就是纯粹是为了完成这种的编译任务所形成的结果,如果你是要完全编译,建议还是花点功夫在这个上面。
posted @ 2022-09-03 19:46  师从名剑山  阅读(136)  评论(0编辑  收藏  举报