如何在Windows上编译面向POSIX系统编写的C源代码
Windows环境编译POSIX平台C程序问题(以SMART字符串匹配工具为例)
用户需在Windows命令行环境下编译C语言实现的字符串匹配工具SMART,根据官方使用说明,解压压缩包后给出的原生编译规则如下:
SMART源码编译方法:
项目提供的makefile为bash脚本文件,用于编译该工具的C源文件,执行命令./makefile即可完成SMART工具编译,各字符串匹配算法的代码会单独完成编译与测试。
项目中makefile的代码内容如下:
#!/bin/bash ./logo echo " Compiling smart.c..................................[OK]" gcc source/smart.c -O3 -msse2 -o smart -lm echo " Compiling show.c...................................[OK]" gcc source/show.c -O3 -msse2 -o show echo " Compiling selectAlgo.c.............................[OK]" gcc source/selectAlgo.c -O3 -o select echo " Compiling test.c...................................[OK]" gcc source/test.c -O3 -o test echo " Compiling all string matching algorithms..........." gcc source/compilesm.c -o compilesm ./compilesm echo " " echo " "
经确认该编译脚本是为GNU/Linux、macOS这类POSIX系统编写的,无法直接在原生Windows环境运行,用户已尝试的操作步骤如下:
- 安装
Git-2.37.1-64-bit.exe并打开Git Bash - 执行命令:
cd C:/Users/DIMITRI/Downloads/smart-13.03进入源码目录 - 执行命令:
./makefile触发编译,出现如下报错:source/smart.c:44:10: fatal error: sys/ipc.h: No such file or directory
该报错本质是Windows环境下不存在Linux专属的POSIX IPC接口,后续源码中#include <sys/shm.h>语句也会触发同类头文件缺失错误。
用户当前已安装MinGW-W64项目构建的x86_64-posix-seh-rev0 8.1.0版本编译器,也曾尝试使用Cygwin编译,但出现完全相同的报错。现咨询以下问题:
- 是否可以通过更换编译器,或是在Windows上安装轻量兼容层(无需安装完整Linux等重型系统)的方式解决上述头文件缺失问题?
- 通用场景下,是否存在可行方案在Windows系统上编译面向POSIX系统编写的C源文件?
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

