- 由于我不是英语的母语者,请见谅我的拼写或语法错误。
- 我不是编译专家,也没有任何有用的构建和其错误方面的经验。
- 我是C#程序员,主要在MS环境中工作。
- 我仅知道3个“必须了解的Linux命令”,即“./configure、make & make install”,这来自于我少量的Linux经验。
我的开发环境
- 我正在使用Windows 7工作站
并使用Cygwin和MinGW(作为Linux“替代品”)进行编译。
问题
我想在Windows上编译原本为Linux发行版编写的C源代码。
/Configure可以正常工作。
如果我使用make命令编译源代码,则会遇到以下错误:
错误
grib_keys.c:50:34:
error: ‘alphasort’ undeclared (first use in this function)
研究:
我的研究证明,这个问题已经被解决了,但不幸的是,答案对我不起作用。
Implicit declaration of scandir; alphasort is undeclared
http://ubuntuforums.org/archive/index.php/t-1653576.html
解决方案说,我只需包含以下内容:#define _GNU_SOURCE
我尝试过了,但正如我已经说明的那样,它不起作用。
我在以下文件中包含了它:
- grib_keys.c
- config.h
我尝试同时编译它们和分别编译它们,以涉及并发和非并发包含。
最终,文件的重要部分看起来像这样:
config.h
********
/* Add #define _GNU_SOURCE to solve "'alphasort' undeclared" error */
#define _GNU_SOURCE
grib_keys.c
***********
#define _GNU_SOURCE
count = scandir(dir, &files, 0, alphasort);
我想要实现的目标和了解的内容:
- 我想编译下面所述API的全部源代码,以在Windows操作系统上使用二进制文件。
- 同时,我想知道我是否将“#define _GNU_SOURCE”标签写在了正确的位置,或者我是否犯了错误。