首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用gcc4构建MSYS相关程序?

如何用gcc4构建MSYS相关程序?
EN

Stack Overflow用户
提问于 2015-08-07 19:26:19
回答 1查看 100关注 0票数 0

MinGW配备了gcc,配置用于制作Windows程序。例如,它不会编译和链接这个小程序:

代码语言:javascript
复制
#include <unistd.h>

int main(void)
{
   uid_t u = getuid(); // no such function in Microsoft library
   return 0;
}

此程序将编译并链接到MSYS编译器,因为MSYS库具有此功能。例如,GNU程序id可以获取和打印用户ID,以及ls -l如何在MinGW中打印用户ID和组ID等等。

唯一的问题是,这个MSYS编译器是旧的: gcc 3.4.4。

有没有一种很好的、“规范的”方法可以将MinGW的gcc 4.5.2指向正确的标题和库来编译基于MSYS的程序?

或者根本不推荐这个路由;最好从头开始构建一个MSYS gcc4,用MSYS gcc3引导它?

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 21:33:59

恐怕答案是“你可能不想这么做”(因此有关它的信息很少)。MSYS环境的目的是为构建MinGW程序提供实用程序。如果给定的程序不需要用于此目的,则不需要为MSYS构建程序。

换句话说,有效地提供了交叉编译工具链,其中目标系统是基于微软库的Windows上的可执行环境。交叉编译工具链本身中的实用程序是在MSYS上构建的,但是MSYS不能用于交叉编译的程序.

需要更多类似Unix环境的应用程序(就像MinGW中包含的实用程序一样)可以使用Cygwin。无论如何,MSYS是Cygwin的叉子。与Cygwin一样,MSYS也提供了自己的库。例如,不仅getuid在那里,而且如果在文件上调用statst_uidst_gid字段将从文件安全描述符中的信息中填充,而MinGW程序使用的函数的Microsoft版本将将这些字段保留为零。必须将MSYS视为与MinGW不同的目标,就像Cygwin一样;将与MinGW一起工作的程序转换为MSYS是一种移植形式。

在我的例子中,所讨论的程序已经针对Cygwin,所以支持MSYS作为目标可能没有什么意义,除非MSYS项目希望将该程序作为MinGW环境的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31885229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档