2011-04-26 30 views
1

我正在研究一個相當長的項目,最初是用Linux機器上的C編寫的。我需要將它移植到Windows,並試圖在Cygwin中使用gcc編譯器作爲「最簡單」的傳輸方法。最初用Linux編寫的C程序,現在用Cygwin移植到Windows(編譯爲w/gcc)

該程序最初是很久以前寫的,並且經過了許多人的努力。它一直在Linux上運行,並沒有任何問題。該程序有很多部分,其中大部分都可以在Linux和Cygwin下編譯和運行。然而,在Cygwin中編譯的項目有一部分,但在做任何事情之前給出了分段錯誤,據我所知(相同的代碼在Linux中正常工作)。

我已經放入了一些printf()語句來查看是否可以縮小它的範圍,但它似乎在它執行任何操作之前給出seg故障(即,我的第一個printf()是第一個在main(){...)之後。我使用了gcc的-Wall選項來嘗試查看是否有任何「顯而易見」的警告/錯誤,但沒有看到任何跳出的內容。它們大多隻是在通過「long int」時期待「int」的警告,但這些警告與我在Linux中使用的警告相同。

有沒有人有什麼樣的事情我應該尋找的嘗試使代碼兼容Cygwin和/或想什麼可能會導致代碼給出一個seg故障之前,即使在Cygwin ? (我會發布一些代碼,但它有幾千行)。

感謝您的幫助!編輯: 感謝您的建議。我通過下面顯示的結果通過gdb。然後,我花了昨天在Linux中嘗試MinGW的更好的一部分。仍然沒有成功。任何一個/兩個問題都可能與架構(Sandy Bridge)或操作系統(Windows 7 64位)有關?我儘快拿到賽格故障的程序加載 - 它甚至沒有讓過去的main(...)

+3

你有沒有在你的Cygwin環境安裝的gdb(或其他調試器)並運行調試器下程序,看看究竟在何處崩潰? – QuantumMechanic 2011-04-26 00:10:58

+0

程序鏈接到哪些DLL?是否涉及C++(可能涉及靜態初始化問題)。當你在gdb或cdb下運行程序時(從「調試工具for Windows」包,它現在是Windows SDK的一部分),是否會跳出來? – 2011-04-26 00:14:53

+0

我使用的:#include 的#include 的#include 「time.h中」 的#include #包括 Ben 2011-04-26 16:08:07

回答

0

如果你只想在windows環境下的exe文件,並不會需要在那裏重建它,你可以嘗試在Linux中使用MinGW和命令i586-mingw32msvc-g++i586-mingw32msvc-gcc進行交叉編譯。它對我有用;希望它適合你。

+0

運行gdb我得到:'code' [New thread 4180.0x1310] \\ 錯誤:dll從0x76b90000開始找不到。 錯誤:DLL找不到0x76150000。 錯誤:DLL找不到0x76b90000。 錯誤:DLL找不到0x76a90000。 [新主題4180.0xb34] – Ben 2011-04-26 16:13:49

相關問題