Startseite > Tags> MinGW

MinGW

Richtlinien

Hinweis für den Teil der Plattform-abhängige Präprozessordirektiven beim Schreiben von Cross-Plattform-Code zu isolieren.

  • Compiler
    • GCC
      • # Ifdef __ GNUC__
        • Oder mehr # if __ GNUC__> = 3 / / GCC3.0
    • Borland C + +
      • # Ifdef __ BORLANDC__
    • Intel-Compiler
      • # Ifdef __ INTEL_COMPILER
    • Microsoft-Compiler
      • # Ifdef _MSC_VER
        • # VC später, wenn _MSC_VER> = 600 / / C + + Compiler 6,0 einschließlich
        • # VC später, wenn _MSC_VER> = 700 / / C / C + + Compiler 7.0 + + einschließlich
        • # Später, wenn _MSC_VER> = 800 / / VC + 1,0
        • # Später, wenn _MSC_VER> = 900 / / VC + 2,0
        • # Später, wenn _MSC_VER> = 1000 / / VC + 4,0
        • # Später, wenn _MSC_VER> = 1010 / / VC + 4,1
        • # Später, wenn _MSC_VER> = 1020 / / VC + 4,2
        • # Später, wenn _MSC_VER> = 1100 / / VC + 5,0
        • # Später, wenn _MSC_VER> = 1200 / / VC + 6,0
        • # Wenn _MSC_VER> = 1300 / / VC2002 später (VC7.0)
        • # Wenn _MSC_VER> = 1310 / / VC2003 später (VC7.1)
        • # Wenn _MSC_VER> = 1400 / / VC2005 später (VC8.0)
        • # Wenn _MSC_VER> = 1500 / / VC2008 später (VC9.0)
        • # Wenn _MSC_VER> = 1600 / / VC2010 später (VC10.0)
  • UNIX-System
    • UNIX
      • # Ifdef __ unix
      • # Ifdef __ unix__
    • Linux
      • # Ifdef __ Linux
      • # Ifdef __ linux__
    • FreeBSD
      • # Ifdef __ FreeBSD__
    • NetBSD
      • # Ifdef __ NetBSD__
    • Cygwin
      • # Ifdef __ CYGWIN__
      • # Ifdef __ Cygwin-Version CYGWIN32__ / / 32bit
    • MinGW (-MnO-cygwin)
      • # Ifdef __ MINGW32__
  • Windows-System
    • CUI
      • # Ifdef _CONSOLE
    • GUI
      • # Ifdef _WINDOWS
    • 32bit Windows
      • # Ifdef WIN32
      • # Ifdef _WIN32
    • 64bit Windows
      • # Ifdef _WIN64
    • Windows-Version
      • # Ifdef WINVER
        • Da # if (WINVER> = 0x030a) / / Windows 3.1
        • # Seit 95 / NT4.0 (WINVER> = 0 × 0400) / / Windows, wenn
        • Da # if (WINVER> = 0 × 0410) / / Windows 98
        • Da # if (WINVER> = 0 × 0500) / / Windows Me / 2000
        • Da # if (WINVER> = 0 × 0501) / / Windows XP / Server 2003
        • # Seit 2003 SP1 (WINVER> = 0 × 0502) / / Windows XP SP2 / Server, wenn
        • Da # if (WINVER> = 0 × 0600) / / Windows Vista / Server 2008
        • Da # if (WINVER> = 0 × 0601) / / Windows 7
      • # Ifdef _WIN32_WINDOWS / / Windows9x
        • # Wenn später (_WIN32_WINDOWS> = 0 × 0400) / / Windows 95
        • # Wenn später (_WIN32_WINDOWS> = 0 × 0410) / / Windows 98
        • # Wenn später (_WIN32_WINDOWS> = 0 × 0500) / / Windows Me
      • # Ifdef _WIN32_WINNT / / WindowsNTx
        • / / Da Windows 2000 (0 × 0500)
          # If (_WIN32_WINNT> = _WIN32_WINNT_WIN2K)
        • / / Seit 2003 Windows XP / Server (0 × 0501)
          # If (_WIN32_WINNT> = _WIN32_WINNT_WINXP)
        • / / Seit 2003 SP1 Windows XP SP2 / Server (0 × 0502)
          # If (_WIN32_WINNT> = _WIN32_WINNT_WS03)
        • / / Von Windows Vista (0 × 0600)
          # If (_WIN32_WINNT> = _WIN32_WINNT_VISTA)
        • / / Von Windows Server 2008 (0 × 0600)
          # If (_WIN32_WINNT> = _WIN32_WINNT_WS08)
        • / / Von Windows 7 (0 × 0601)
          # If (_WIN32_WINNT> = _WIN32_WINNT_WIN7)
      • # Ifdef _WIN32_WCE / / WindowsCE
        • # If (_WIN32_WCE> = 0 × 0420) / / Windows Mobile 2003 (PPC2003)
        • # If (_WIN32_WCE> = 0 × 0421) / / Windows Mobile 2003 SE (PPC2003SE)
        • # If (_WIN32_WCE> = 0 × 0501) / / Windows Mobile 5.0
        • # If (_WIN32_WCE> = 0 × 0502) / / Windows Mobile 6 Professional / Classic
        • # If (WINCEOSVER> = 0 × 0300) / / WindowsCE3.0 später (PPC2002)
        • # If (WINCEOSVER> = 0 × 0420) / / WindowsCE4.2 später (PPC2003)
        • # If (WINCEOSVER> = 0 × 0500) / / WindowsCE5.0 später (WM5.0)
    • Internet Explorer Version
      • # Ifdef _WIN32_IE
        • # If (_WIN32_IE> = 0 × 0200) / / Windows 95/NT 4.0 (Comctl32.dll 4,00, Shell32.dll 4,00)
        • # If (_WIN32_IE> = 0 × 0300) / / Internet Explorer 3.0, 3.01, 3.02
        • # If (_WIN32_IE> = 0 × 0400) / / Internet Explorer 4.0
        • # If (_WIN32_IE> = 0 × 0401) / / Internet Explorer 4.01
        • # If (_WIN32_IE> = 0 × 0500) / / Internet Explorer 5.0, 5.0a, 5.0b
        • # If (_WIN32_IE> = 0 × 0501) / / Internet Explorer 5.01
        • # If (_WIN32_IE> = 0 × 0550) / / Internet Explorer 5.5
        • # If (_WIN32_IE> = 0 × 0600) / / Internet Explorer 6.0
        • # If (_WIN32_IE> = 0 × 0601) / / Internet Explorer 6.0 SP1
        • # If (_WIN32_IE> = 0 × 0603) / / Internet Explorer 6.0 SP2
        • # If (_WIN32_IE> = 0 × 0700) / / Internet Explorer 7.0
        • # If (_WIN32_IE> = 0 × 0800) / / Internet Explorer 8.0

Beachten Sie, <br /> Präprozessor, um als 0 definierten Bezeichner zu behandeln, # if __ GNUC__> = 3 oder mehr, kann aber als GCC3 verwendet werden,
Wenn Sie versuchen, um festzustellen, # if __ GNUC__ <3, ob das System GCC2, diejenigen, die nicht GCC gehören.
Referenz

Ruft die Version von Windows

Aber ich glaube nicht, dass ich verwenden kann, vorläufig beachten.
Wenn der Compiler kann ohne Probleme kompiliert werden und ich denke, System Windows.
Zaghaft, kompilieren und bestätigen die Operation wurde in MinGW durchgeführt.

#include <windows.h> #include <stdio.h> int main(void) { unsigned int GV = GetVersion(); printf("GetVersion API(GV) = %08X\n\n", GV); printf("_winver = %08X\n", _winver); printf("_winmajor = %08X\n", _winmajor); printf("_winminor = %08X\n", _winminor); printf("_osver = %08X\n\n", _osver); printf("(( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF = %08X (= _winver)\n", (( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF ); printf("GV & 0XFF = %08X (= _winmajor)\n", GV & 0XFF ); printf("( GV >> 8 ) & 0XFF = %08X (= _winminor)\n", (( GV >> 8 ) & 0XFF)); printf("GV >> 16 = %08X (= _osver)\n\n\n", (GV >> 16) ); // Windows version(_winmajor, _winminor, _osver) printf("This system is ["); if ( _osver < 0X8000 ) { // NT Group (_osver LowWORD MSB = 0) switch (_winmajor) { case 3: case 4: printf ("Windows NT %u.%u Build %u", _winmajor, _winminor, _osver); break; case 5: switch (_winminor) { case 0: printf ("Windows 2000 Build %u", _osver); break; case 1: printf ("Windows XP Build %u", _osver); break; case 2: printf ("Windows Server 2003 family Build %u", _osver); break; default: printf ("NT Group Windows Build %u", _osver); } break; case 6: switch (_winminor) { case 0: printf ("Windows Vista or Windows Server 2008 Build %u", _osver); break; case 1: printf ("Windows 7 Build %u", _osver); break; default: printf ("NT Group Windows Build %u", _osver); } break; default: printf ("NTGroup Windows Build %u", _osver); } } else { switch (_winmajor ) { case 0: //Win32s Group case 1: case 2: case 3: printf ("Win32s Build %u", _osver & 0X7FFF); break; case 4: // 9X Group (_osver is invalid.) switch (_winminor) { case 0: printf ("Windows 95 Build ----"); break; case 10: printf ("Windows 98 Build ----"); break; case 90: printf ("Windows Me Build ----"); break; default: // To make sure printf ("Newer than Windows Me"); } break; default: // To make sure printf ("Newer than Windows Me"); } } printf("]"); return 0; } 

Teil 2 mit dem MinGW kompiliert Jpegopitm

Ich könnte kommen zusammen an einem Ort, wo es mehr fix nach changes'm eine Änderung der Jpegoptim.c ist.

 @@ -53,6 +53,39 @@ #define ICC_IDENT_STRING "ICC_PROFILE\0" #define ICC_IDENT_STRING_SIZE 12 +#ifdef WIN32 +#define uid_t int +#define gid_t int +#define ROOT_UID 0 +#define ROOT_GID 0 +#define realpath(N,R) _fullpath((R),(N),_MAX_PATH) +uid_t getuid(void) +{ + return ROOT_UID; +} +uid_t geteuid(void) +{ + return ROOT_UID; +} +gid_t getgid(void) +{ + return ROOT_GID; +} +gid_t getegid(void) +{ + return ROOT_GID; +} +int setuid(uid_t uid) +{ + return (uid == ROOT_UID ? 0 : -1); +} +int setgid(gid_t gid) +{ + return (gid == ROOT_GID ? 0 : -1); +} + +#endif + void fatal(const char *msg); struct my_error_mgr { 

Zusammengestellt mit dem MinGW Jpegopitm

Ich stolperte eine kleine Notiz, die jpegoptim kompilieren.

  1. Entpacken Sie die Platzierung jpegoptim-1.2.3 unter msys / src /
  2. Starten Sie msys, geben Sie die folgenden Befehle:
     $ cd /src/jpegoptim-1.2.3/ $ autoconf $ configure 
  3. konfigurieren nicht besteht, kommen die folgende Fehlermeldung aus
     configure: error: cannot find install-sh, install.sh, or shtool in aux "."/aux 
  4. wie folgt geändert werden configure.in
     @@ -3,7 +3,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(jpegoptim.c) AC_CONFIG_HEADER(config.h) -AC_CONFIG_AUX_DIR(aux) +AC_CONFIG_AUX_DIR(sub) AC_CANONICAL_HOST 
  5. Erstellen Sie ein Unterverzeichnis, von der entsprechenden Stelle wie zB install-sh bringen (In dem Beispiel aus jpeglib)
     $ mkdir sub $ cp ../jpeg-6bx/install-sh ../jpeg-6bx/config.sub ../jpeg-6bx/config.guess ./sub 
  6. Wieder auf ein configure-Datei zu generieren, führen Sie das configure
     $ autoconf $ configure 
  7. Wenn Sie durch zu konfigurieren, führen Sie das machen. Erhalten Sie dann die folgenden Fehler:
     jpegoptim.c:354: undefined reference to 'realpath' jpegoptim.c:354: undefined reference to 'realpath' 
  8. die wie folgt modifiziert werden jpegoptim.c
     @@ -351,7 +351,11 @@ } break; case 'd': - if (realpath(optarg,dest_path)==NULL || !is_directory(dest_path)) { +#ifdef WIN32 + if (_fullpath(dest_path,optarg,MAXPATHLEN)==NULL || !is_directory(dest_path)) { +#else + if (realpath(optarg,dest_path)==NULL || !is_directory(dest_path)) { +#endif fatal("invalid argument for option -d, --dest"); } if (verbose_mode) @@ -441,8 +445,13 @@ fatal("splitdir() failed!"); strncpy(newname,argv[i],sizeof(newname)); } - snprintf(tmpfilename,sizeof(tmpfilename), +#ifdef WIN32 + snprintf(tmpfilename,sizeof(tmpfilename), + "%sjpegoptim-%d.tmp", tmpdir, (int)getpid()); +#else + snprintf(tmpfilename,sizeof(tmpfilename), "%sjpegoptim-%d-%d.tmp", tmpdir, (int)getuid(), (int)getpid()); +#endif } retry_point: 
  9. Auch hier ist die Zusammenstellung in der vergangen machen.

es, obwohl es Ordner mit dem Namen aux Hilfs-Skripte wie zB install-sh ist es ein Relikt aus dem System jeder BSD,
Sie können nicht einen Ordner namens aux speziellen Ordner in den Überresten der DOS in Windows.
Deshalb haben wir einige Arten Hilfs-Skript zu speichern, um die "sub" Verweise zu ändern, können Sie eine "sub" neuen Ordner, der in der Software-System GNU enthalten ist.
Darüber hinaus war getuid realpath und das in Fehler bei der Kompilierung ist eine Funktion des POSIX-System
Wurde gelöscht oder mit einer, die die gleiche oder arbeitet daran, dass Windows nicht existiert ersetzt.
Ich hatte besser umschreiben es schöner in unserem Beispiel aber ersetzt die realpath um die Zusammenstellung _fullpath passieren

Startseite > Tags> MinGW

Suche
Füttern
Übersetzung
Japanese flagItalian flagKorean flagChinese (Simplified) flagChinese (Traditional) flagEnglish flagGerman flagFrench flagRussian flagVietnamese flagThai flag

Zum Anfang der Seite