2009-10-04 12 views
5

W mojej pracy wszystkie dane projektu znajdują się w systemie plików NFS dostępnym zarówno z komputerów z systemem Linux, jak i Windows (przy użyciu Samby). Cała praca jest wykonywana na Linuksie, ale mam pomysł skompilowania niektórych narzędzi dla Windows, aby móc debugować za pomocą Visual Studio.Czy można kompilować pliki binarne systemu Windows na komputerze z systemem Linux?

Mam już ładny plik Makefile, który może zbudować kod dla 32-bitowego lub 64-bitowego systemu Linux, używając różnych celów. Zakładając, że mam wersje Windows wszystkich zewnętrznych bibliotek gdzieś w NFS i zakładając, że kod jest wystarczająco czysty, aby skompilować pod Windows, czy możliwe jest skompilowanie i połączenie mojego programu dla Windows przy użyciu istniejącego pliku Makefile, w systemie Linux? Idealnie chciałbym wywołać makefile raz i mieć go zbudować wszystkie trzy 32-bitowe Linux, 64-bitowe Linux i Windows.

Dodatkowym plusem jest opcja kompilacji z dowolnymi metadanymi Visual Studio, aby ułatwić debugowanie.

+0

Pliki binarne są prekompilowane Źródło może być kompilowane – SomeUser

Odpowiedz

4

Tak, można to osiągnąć na przykład za pomocą MinGW.

Jednak prawdopodobnie będziesz musiał dostosować jedną lub dwie opcje w pliku makefile.

+0

MinGW działa w systemie Windows, nie Linux. Ale to przynajmniej zbuduje natywną aplikację Windows, używając narzędzi GNU znanych użytkownikom Linuksa. Należy jednak pamiętać, że MinGW używa Microsoft Runtime MSVCRT.DLL C zamiast GNU libc. – Clifford

+0

MinGW działa również na systemie Linux. –

+0

MinGW działa również na Linuksie, i to jest to, co zwykle używane w kompilacji krzyżowej systemu Linux-> Windows. –

1

Istnieje wiele możliwości, mogę myśleć:

  • Można spróbować uruchomić Visual Studio pod Wine. Jeśli program Visual Studio nie zostanie uruchomiony, nadal możesz uruchamiać narzędzia wiersza polecenia.

  • Uruchom pełną instalację systemu Windows na maszynie wirtualnej. Zrobiłem to z Linuksem na Windowsie, ale nie na odwrót, ale jestem pewien, że jest to możliwe.

  • Zastosowanie VNC dostęp do oddzielnego komputera z systemem Windows Linux PC

  • użytkowania cross-kompilacji GCC zamiast Visual Studio

+1

Dlaczego warto wybrać najlepszą opcję jako ostatnią? – gimpf

+0

@gimpf: Wymienione podczas przechodzenia, a "najlepsza opcja" jest kwestią opinii. OP chciał użyć debugera Visual Studio, a ostatnia opcja nie wspiera tego celu, więc powiedziałbym, że nie było to w tym przypadku rozwiązanie basta. – Clifford

1

Potrzebny jest pakiet cross-kompilacji. Możesz także użyć biblioteki Wine.