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

今天在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      /* 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对应的目录下,再运行即可!

你可能感兴趣的:(c)