首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有_alloca,GCC怎么编译?

没有_alloca,GCC怎么编译?
EN

Stack Overflow用户
提问于 2010-02-28 00:59:50
回答 4查看 2.8K关注 0票数 5

由于某些原因,我应该用gcc编译一个C文件,然后链接到Visual C++ 2008项目。

(我用的是目前最新的gcc版本: cygwin gcc 4.3.4 20090804。)

但有一个问题: gcc总是用_alloca分配一个大数组,

VC链接器不能解析符号__alloca。

例如,

代码语言:javascript
复制
int func()
{
    int big[10240];
    ....
}

尽管我没有显式调用_alloca函数,但这段代码使_alloca具有依赖性。

(数组大小很重要。如果我更改了10240 -> 128,一切正常)

我尝试过-fno-builtin-alloca或-fno-builtin选项-fno-builtin,但没有成功。

有没有可能让gcc不使用_alloca?(或调整阈值?)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-28 02:59:38

最好的做法是使用VC++编译所有代码。如果这不可能的话..

你应该用mingw的,而不是cygwin的。它的设计目的是输出将链接到VC++运行时的代码,而不是cygwin库。特别是,它将调用VC++运行时函数__chkstk,而不是__alloca。

票数 7
EN

Stack Overflow用户

发布于 2010-02-28 02:23:47

您可以编写自己的_alloca例程并链接到该例程。看看gcc库的源代码,看看它应该做些什么。

票数 3
EN

Stack Overflow用户

发布于 2010-02-28 04:30:48

看起来_alloca已经被微软弃用了,并且在VS2005之后不再出现在他们的运行时库中。较新的运行时库支持_malloca

你的选择看起来不太好。您可以尝试使用VS2005进行构建。也许cygwin有一个选项,你可以告诉它你正在使用一个较新的运行时库(如果他们还不支持,你可以将其作为功能请求提交)。

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

https://stackoverflow.com/questions/2348172

复制
相关文章

相似问题

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