Как к GCC компилируют без _alloca?

По некоторым причинам я должен использовать gcc для компиляции файла C, затем связаться против проекта Visual C++ 2008 года.

(Я использовал текущую последнюю gcc версию: cygwin gcc 4.3.4 20090804.)

Но существует одна проблема: gcc всегда выделяют большой массив с _alloca,

и компоновщик VC не может разрешить символ __ alloca.

например,

int func()
{
    int big[10240];
    ....
}

этот код делает _alloca зависимость, хотя я не вызывал _alloca функцию явно.

(выстройте вопросы размера. если я изменяюсь 10240-> 128, все хорошо),

Я попробовал gcc опцию-fno-builtin-alloca или - fno-встроенный, но никакая удача.

Действительно ли возможно сделать gcc для не использования _alloca? (или скорректируйте порог?)

5
задан Lazer 27 May 2010 в 17:46
поделиться

4 ответа

Лучше всего скомпилировать весь код на VC ++. Если это невозможно ..

Вам следует использовать mingw gcc вместо cygwin. Он предназначен для вывода кода, который будет связан со средой выполнения VC ++, а не с библиотеками cygwin. В частности, он вызовет функцию времени выполнения VC ++ __chkstk вместо __alloca.

7
ответ дан 13 December 2019 в 19:25
поделиться

Вы можете просто написать свою собственную процедуру _alloca и связать ее с ней. Взгляните на исходный код библиотеки gcc, чтобы узнать, что она должна делать.

3
ответ дан 13 December 2019 в 19:25
поделиться

Похоже, _alloca устарел Microsoft и больше не входит в их библиотеки времени выполнения после VS2005. Новые библиотеки времени выполнения поддерживают _malloca .

Ваши варианты не подходят. Вместо этого вы можете попробовать собрать VS2005. Возможно, у cygwin есть опция, в которой вы можете сказать, что используете новую библиотеку времени выполнения (и если они еще не поддерживают ее, вы можете отправить ее как запрос функции).

1
ответ дан 13 December 2019 в 19:25
поделиться
0
ответ дан 13 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: