为什么要这么做

之前为了写一些window环境下的小工具,想要写一个.exe 直接运行,与linux环境下类似,直接使用命令行的形式完成一些基本的计算之类的操作,当实际要做的时候,首先就发现了一个非常大的问题:
按照c语言编译过程来说,首先需要编写一个.c 文件,然后通过这个.c 文件与编译链接等操作,最终生成一个能够在linux环境下运行的可执行文件。但是,在windows环境下,系统并没有集成gcc之类的工具,之前写这类工具,都是使用vs套件自动生成,包括依赖环境等都是自动安装好的,一旦涉及到文件移动之类,环境变量经常会出现各种各样的问题,解决起来很头疼。
因此,本文主要就来搞一个小demo,看一下,windows一个小的命令行工具,想要尽可能快速的搭建一个精简的环境大概需要怎么做。(偷懒办法,其实也是搭建了一个小型linux环境,技术细节需要深究,暂不做考虑)

安装依赖

在linux环境下,我们编译一个.c 文件,使其生成一个可执行文件,需要手动执行一条命令, gcc demo.c -o test 当然,更加复杂的系统需要用到交叉编译等,这里暂不做讨论。
但是windows中没有这种命令,因此就需要借助c/c++ 编译工具来完成,我这里选用的Cygwin, 从官网下载之后安装该工具,傻瓜式安装,这里不再赘述,需要注意的是,cygwin默认安装大多数的linux命令,比如’ls’,'rm’等。在选择软件安装方式可以选择在线安装,选择安装源,之后会让你选择需要安装的软件,在全部里选择gcc-core g++。
当cygwin安装成功后,打开cygwin可以发现生成了一个类似于linux环境的命令行环境。
image.png
如果在这里直接编写软件,并且使用gcc编译的话,的确能生成一个exe文件,并且在命令行中可以直接运行,但是,此时使用图形化界面打开生成的可执行文件,就会直接报错,cygwin1.dll 与 libstd++*.dll 文件缺失,这实际上并不是缺失,而是安装了cygwin已经安装了但是windows无法识别,找到cygwin的安装目录,打开bin,你会发现所有的文件都有, 只不过没有被windows识别到
这时候,只需要添加一个环境变量 将cygwin/bin的目录添加到环境变量中的PATH中去,就可以解决报错的问题。
image.png
image.png
image.png
测试
image.png


bugs_maker
56 声望1 粉丝