Page 1 of 1

MinGW

Posted: Thu Oct 14, 2010 1:16 pm
by The Punisher
netharis wrote:Το MinGW είναι άσχημη hackιά. Δεν είναι POSIX compliant (πρακτικά δουλεύει over Win32 API), και δεν το συνιστώ για development.
Γνώμη μου είναι όσοι δεν μπορείτε να δουλέψετε σε Linux/BSD OS's να χρησιμοποιήσετε κάποιο native compiler σε Windows (π.χ msvc).
elaborate please :-D

Re: MinGW

Posted: Thu Oct 14, 2010 5:40 pm
by netharis
Είναι προσωπική μου άποψη αυτή, να αποφεύγω τέτοιου είδους software ports για development.
Όσο αφορά το C dev, το MinGW δεν χρησιμοποιεί το *libc, αλλά κάνει κλήσεις στο runtime library της MS. Αυτό το κάνει non compliant στο POSIX και κατα συνέπεια cross-compile δεν υπάρχει πάντα (σε αντίθεση με το cygwin).
Γίνεται ένας χαμός με τα licenses, αφού μπλέκει και η MS μέσα.
Το COM δεν δουλεύει σωστά.
Γενικά δεν υπάρχει λόγος αν κάνεις απλό programming να παίζεις με τέτοια κόλπα. Καλύτερα να χρησιμοποιήσεις το native compiler της MS.

Re: MinGW

Posted: Thu Oct 14, 2010 7:09 pm
by The Punisher
Έχω συναντήσει κι εγώ περιπτώσεις που ο gcc του Mingw δεν κάνει compile κώδικα. Όταν λες "σε αντίθεση με το cygwin" τι εννοείς;
Ο compiler της MS μπορεί να κάνει απευθείας compile (πέρα των syscalls) που έχει αναπτυχθεί για gcc;

Γενικά τι θα πρότεινες για πακέτο gcc + make σε κάποιον που κάνει develop σε Linux και θέλει να κάνει build και σε windows;

Re: MinGW

Posted: Thu Oct 14, 2010 7:27 pm
by netharis
The Punisher wrote:Όταν λες "σε αντίθεση με το cygwin" τι εννοείς;
Το Cygwin, είναι POSIX compliant, καθώς δεν χρησιμοποιεί το win32 api, και δίνει ένα ολόκληρο δικό του layer για λόγους συμβατότητας.
The Punisher wrote:Ο compiler της MS μπορεί να κάνει απευθείας compile (πέρα των syscalls) που έχει αναπτυχθεί για gcc;
Γενικά ότι δεν έχει calls όπως mmap(), ioctl(), fork() κτλ δεν έχουνε σημαντικές διαφορές. Τώρα βέβαια υπάρχουν και λεπτομέρειες στις διαφορές μεταξύ διαφόρων εκδόσεων gcc - msvc.
The Punisher wrote:Γενικά τι θα πρότεινες για πακέτο gcc + make σε κάποιον που κάνει develop σε Linux και θέλει να κάνει build και σε windows;
Μία είναι η λύση για αυτές τις περιπτώσεις. Port του κώδικα! Το να χρησιμοποιήσεις hackiες MinGW/Cygwin είναι bloat κατά τη γνώμη μου. (Στο ένα δεν είσαι POSIX, στο άλλο πρέπει να κουβαλάς libs)

Re: MinGW

Posted: Fri Oct 15, 2010 1:22 am
by AmmarkoV
My 2 cents of insight

H C/C++ είναι 100% portable ( γιαυτό δημιουργήθηκε ) κάποια warnings που μπορούν να πετάγονται σε κάποιον compiler και όχι σε άλλον συνήθως από το συντακτικό της κάθε γλώσσας καθορίζονται αρκετά strictly οπότε ως προς αυτό είναι οκ
Το MinGW είναι μια χαρά ( προσωπικά αυτό χρησιμοποιώ και δεν είχα ποτέ πρόβλημα , ακόμα και για αρκετά περίεργα πράματα που έχω δοκιμάσει :P ) , τώρα λόγω οτι το mingw κάνει link στατικά πολύ περισσότερες βιβλιοθήκες σε ένα exe για λόγους "πολιτικής" και portability χωρίς τις extra βιβλιοθήκες του είναι καλύτερος ο compiler της microsoft (στην πλατφόρμα της microsoft) παρότι τα binaries δεν έχουν κάποια μεγάλη διαφορά ..
Αλλά το οτι χρειάζεσαι VisualStudio κτλ είναι show stopper .. :P
Αν κάποιος θέλει κάποια crossplatform syscalls μπορεί είτε να χρησιμοποιήσει κάποιο crossplatform ( και άρα native σε κάθε πλατφόρμα ) framework ( i.e. WxWidgets ) , αλλιώς μπορεί πολύ εύκολα για ένα δικό του wrapper ( παράδειγμα int countFilesInDir(char * dirname) να έχει pre-compiler directives για Unix/Windows έτσι ώστε με το ίδιο block κώδικα να κάνει compile σε διαφορετικά platforms με το ίδιο αποτέλεσμα..

Επίσης το τελευταίο είναι στην πραγματικότητα πολύ πιο εύκολο από όσο φαντάζεται κάποιος στην αρχή! :)

Επίσης μπορείς να κατεβάσεις MinGW και απο linux να βάλεις στα make files του project σου να πετάει και το windows exe ταυτόχρονα με το linux one οπότε να είσαι πολύ μάγκας :)
Επίσης σε IDE όπως το Code::Blocks μπορείς να βάλεις profiles στο ίδιο project για όσους compilers θές , πχ Windows Release , Linux Release , Mac Release , Windows Debug κτλ και να κάνεις και απο εκεί σχετικά εύκολα αυτή την δουλειά!

Re: MinGW

Posted: Fri Oct 15, 2010 9:51 am
by Theofaman
Μήπως έχετε κάποια σχετικά links για μελέτη ? :-)

Re: MinGW

Posted: Fri Oct 15, 2010 3:11 pm
by AmmarkoV
MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications, and which do not depend on any 3rd-party C-Runtime DLLs (only the Microsoft C runtime, MSVCRT).

MinGW compilers provide access to the functionality of the Microsoft C runtime and some language-specific runtimes. MinGW, being Minimalist, does not and will never attempt to provide a POSIX runtime environment for POSIX development. If you want POSIX development, please look at Cygwin instead.

MinGW includes:

* A port of the GNU Compiler Collection (GCC), including C, C++, ADA and Fortran compilers;
* GNU Binutils for Windows (linker, archive manager)
* MSYS, a fork of Cygwin designed for running configure scripts and Makefiles
* Community-supported add-on tools and libraries (mingwPORTs)
* A graphical and a command-line installer for Windows
* Cross-compilers to build Windows applications on other platforms (e.g. Linux)

MSYS, a contraction of "Minimal SYStem", is a Bourne Shell command line interpreter system. Offered as an alternative to Microsoft's cmd.exe, this provides a general purpose command line environment, which is particularly suited to use with MinGW, for porting of many Open Source applications to the MS-Windows platform; it includes a small selection of Unix tools, chosen to facilitate that objective, and using it is a necessary prerequisite for building mingwPORTs.

mingwPORTs are user contributed additions to the MinGW software collection. Rather than providing these "add-ons" as precompiled binary packages, they are supplied in the form of interactive Bourne shell scripts, which guide the end user through the process of automatically downloading and patching original source code, then building and installing it. Users who wish to build any application from a mingwPORT must first install both MinGW and MSYS.

http://www.codeblocks.org/
http://wiki.codeblocks.org/index.php?ti ... d_compiler

http://www.mingw.org/
http://www.mingw.org/wiki/FAQ

http://basic.xullum.net/mingw32/
Και για Code:Blocks
http://wiki.wxwidgets.org/Cross-Compiling_Under_Linux

Re: MinGW

Posted: Sat Oct 16, 2010 12:40 am
by The Punisher