如何使用MINGW编译Windows版POSIX Threads(pthreads4w)
报错原因分析
第一次报错
你最初运行mingw32-make时调用的是源码根目录下默认适配MSVC nmake的Makefile,该文件的语法规则和GNU make完全不兼容,因此触发missing separator报错。
第二次报错
GNUmakefile.in是Autotools工具链的模板文件,文件中所有带@包裹的字符串(如@RC@、@srcdir@)都是占位符,需要经过configure流程替换为实际的系统路径、工具路径才能作为合法的Makefile使用,你直接重命名使用模板文件自然会触发变量识别失败的报错。
手动编译操作步骤
如果你确实需要自行编译源码,可按照以下步骤操作:
- 首先在MinGW的包管理器中安装Autotools相关依赖,你缺少的
autoheader、autoconf命令都属于这个套件,并非必须依赖Linux环境,MinGW生态下有对应的Windows移植版本:- 若使用MSYS2环境,直接运行
pacman -S autoconf automake libtool安装依赖 - 若使用旧版MinGW,使用
mingw-get安装对应autoconf、automake组件即可
- 若使用MSYS2环境,直接运行
- 打开MinGW配套的MSYS类bash终端(不要使用Windows原生CMD),进入源码根目录,依次执行README给出的命令:
autoheader autoconf ./configure - 上述步骤执行完成后,会生成合法的GNUmakefile,此时运行
mingw32-make即可正常编译,直接无参运行make可查看所有可选的编译目标(如静态库、动态库、测试用例等)。
更简便的替代方案
你发现当前MinGW环境已内置pthreads库是更省事的选择,实际开发时直接使用内置版本即可:编译源码时在链接参数中添加-lpthread就能正常链接pthreads库,不需要自行编译源码。
内容的提问来源于stack exchange,提问作者Haibaicai
相关产品推荐
相关产品推荐

