Программа на C изначально написана на Linux, теперь портируется на Windows с помощью Cygwin (скомпилировать w / gcc) - PullRequest
1 голос
/ 26 апреля 2011

Я работаю над довольно длинным проектом, который изначально был написан на C на машине с Linux.Мне нужно перенести его на windows, и я пытаюсь использовать компилятор gcc в Cygwin как «самый простой» способ передачи.

Программа изначально была написана давно и прошла через многие руки.Он всегда работал на Linux раньше и не имел проблем.Программа состоит из нескольких частей, большинство из которых прекрасно компилируются и работают как в Linux, так и в Cygwin.Тем не менее, есть одна часть проекта, которая компилируется в Cygwin, но дает ошибку сегментации, прежде чем делать что-либо, насколько я могу судить (такой же код работает в Linux).

Я добавил несколько операторов printf (), чтобы посмотреть, смогу ли я сузить его, но, похоже, он вызывает ошибку сегмента, прежде чем он вообще что-то сделает (т. Е. Мой первый printf () - этопервое после main () {...).Я использовал опцию -Wall с gcc, чтобы попытаться выяснить, есть ли какие-либо «очевидные» предупреждения / ошибки, но не вижу ничего, что выскакивает.В основном это просто предупреждения об ожидаемом «int», когда передается «long int», но они идентичны предупреждениям, которые я получаю при использовании -Wall в Linux.

Есть ли у кого-нибудь предложения о том, какого родавещей, которые я должен искать, пытаясь сделать код совместимым для Cygwin, и / или размышлять о том, что может привести к тому, что код выдает ошибку сегмента еще до того, как начать работу в Cygwin?(Я бы опубликовал некоторый код, но это несколько тысяч строк).

Спасибо за вашу помощь!

РЕДАКТИРОВАТЬ: Спасибо за предложения.Я прошел через GDB с результатами, показанными ниже.Затем я провел большую часть вчерашнего дня, пробуя MinGW в Linux.Все еще без успеха.Могут ли обе проблемы быть связаны с архитектурой (Sandy Bridge) или ОС (64-битная Windows 7)?Я получаю ошибку сегмента, как только программа загружается - она ​​даже не проходит через главное (...)

1 Ответ

0 голосов
/ 26 апреля 2011

Если вам нужен только исполняемый файл в среде Windows, и вам не нужно его перестраивать там, вы можете попробовать использовать MinGW и команду i586-mingw32msvc-g++ или i586-mingw32msvc-gcc в Linux для кросс-компиляции.Это сработало для меня;надеюсь, это работает для вас.

...