window系统下使用gcc编译简单C程序(缺少regex.h文件库)

2017/11/19 使用gcc编译程序的教训

Posted by WangXiaoDong on November 19, 2017

时间:2017年11月19日 天气:阴:cloud:


Author:冬之晓
Email: 347916416@qq.com
MyAppearance: MyAppearance

今天在Windows10 平台上编译一个简单的C程序,本以为很简单,结果折腾了好久,记录下来,以防忘记。 在论文中看到一个算法的程序,就是一个简单的一个文件的C程序,名叫slct.c。我想随便用gcc编译一下就行。

1 下载编译器

首先我需要一个gcc编译器,于是我就上网搜索到网址:https://jaist.dl.sourceforge.net/project/mingw/Installer/ 里面,下载mingw-get-setup.exe 文件进行安装。

安装后发现用户环境变量里面多了两个键值对: MINGW530_32 对应 D:\log-related\Risto\MinGW PATH 对应 %MINGW530_32%\bin 说明安装程序自动为我们的环境变量里面加入了gcc所在的目录,这样就可以直接使用gcc命令了

2 进行编译

然后进入C文件所在目录下运行命令: gcc slct.c -o output 结果出现错误:

slct.c:24:57: fatal error: regex.h: No such file or directory
#include <regex.h>     /* for regcomp() and regexec() */

上网搜了一下,原来regex.h不属于windows里面的基本库!只要Linux系统里面才有。好烦人! 所以只能进行第三步!

3 安装regex库

上网搜了一下,一般下载需要的库在网址: https://sourceforge.net/projects/gnuwin32/files/ 里面。 进入后,找到regex子文件,继续找到二进制的下载页面(懒得自己编译源文件了): https://sourceforge.net/projects/gnuwin32/files/regex/2.7/regex-2.7-bin.zip/download 下载后解压,得到如下目录结构:

regex-2.7-bin
	|- bin
		|- regex2.dll
	|- contrib 
	|- include
		|- regex.h	
	|-lib
		|- libregex.dll.a
		|- libregex.la
		|- regex.lib
		|- regex2.def
		|- regex-bcc.lib
	|- man
	|- manifest

显然,我需要的是include目录(对应头文件目录)、lib目录(对应lib库文件目录)、bin目录(对应运行时动态连链接库目录)。因此只列出了对应的目录树。

然后还在原来的slct.c文件目录下运行命令: gcc slct.c -o output -I /d/log-related/Risto/regexForC/regex-2.7-bin/include/ -L /d/log-related/Risto/regexForC/regex-2.7-bin/lib/ -l regex -static

注意:-I(大写的i)后面的参数是我需要包含的regex.h的目录 -L后面的参数是我需要增加的lib库文件对应的目录 -l(小写的L)后面的参数是我要加的lib的文件名,一般就写regex即可 这样就生成了:output.exe可执行文件。 最后运行发现缺少regex2.dll文件,因此将该文件从目录树中的bin目录下拷贝到output.exe对应的目录下,再运行即可!