Für Windows kompilieren: GCC woher?



  • f.-th. schrieb:

    @;fricky
    dein Link geht zur Version 3.4.5 des MinGW

    Normalerweise hinkt der (nicht benötigte) Installer von MinGW den Paketen um ein halbes Jahr hinterher.
    Current Release_ gcc-4.4.0
    http://sourceforge.net/projects/mingw/files/



  • f.-th. schrieb:

    @;fricky
    dein Link geht zur Version 3.4.5 des MinGW

    ist doch nicht schlimm. oder hat der 3.4.5 irgendwelche fiesen bugs, die das arbeiten mit ihm unmöglich machen?
    🙂



  • ;fricky schrieb:

    ist doch nicht schlimm. oder hat der 3.4.5 irgendwelche fiesen bugs, die das arbeiten mit ihm unmöglich machen?
    🙂

    bei C++ ändert sich derzeit ein wenig. das betrifft dich nicht.



  • volkard schrieb:

    bei C++ ändert sich derzeit ein wenig. das betrifft dich nicht.

    der OP will doch C-sources compilen. und c++ ging ja vorher auch schon, ohne die neuerungen.
    🙂



  • ;fricky schrieb:

    der OP will doch C-sources compilen.

    Stimmt. Es ging um einen neuen Schalter.
    "Warum ich den 4.4.1 benutzen will? Weil meine CPU laut GCC mit einem Schalter unterstützt wird. Dieser Schalter wird aber nicht gefunden wird."

    ;fricky schrieb:

    und c++ ging ja vorher auch schon, ohne die neuerungen.

    Nö, ging nicht.



  • volkard schrieb:

    "Warum ich den 4.4.1 benutzen will? Weil meine CPU laut GCC mit einem Schalter unterstützt wird. Dieser Schalter wird aber nicht gefunden wird."

    hast recht, das hab ich übersehen.

    volkard schrieb:

    ;fricky schrieb:

    und c++ ging ja vorher auch schon, ohne die neuerungen.

    Nö, ging nicht.

    wieso das nicht?
    🙂



  • ;fricky schrieb:

    wieso das nicht?
    🙂

    Bin nicht sicher, aber ist es nicht falsch, wenn

    char ch=0;
    for(;;){
      tuwas();
      if(!++ch)
        cout<<"hallo\n";
    }
    

    keine Ausgabe macht?
    (mit if(!--c) gehts)

    Oder template placement delete werden nicht erzeugt und aufgerufen.



  • volkard schrieb:

    Bin nicht sicher, aber ist es nicht falsch, wenn

    char ch=0;
    for(;;){
      tuwas();
      if(!++ch)
        cout<<"hallo\n";
    }
    

    ^^glaub ich nicht, dass er das nicht kann. irgendwann ist 'ch' 0 und dann muss er was ausgeben. sowas wäre schon in der version 0.x aufgefallen.

    volkard schrieb:

    Oder template placement delete werden nicht erzeugt und aufgerufen.

    naja, ich glaube es gibt keinen c++ compiler, der alle c++-spezialitäten beherrscht, die theoretisch möglich wären. dafür ist die sprache zu umfangreich und die möglichen permutationen von sprachmitteln sind einfach zu viele. das wird mit c++0x wohl noch schlimmer werden.
    🙂



  • ;fricky schrieb:

    ^^glaub ich nicht, dass er das nicht kann. irgendwann ist 'ch' 0 und dann muss er was ausgeben. sowas wäre schon in der version 0.x aufgefallen.

    Hört, hört. Wenn ich sowas sage, erwarte ich, daß Du es erst testest, und nicht dumm widersprichst.

    localhost ~ # nano -w main.cpp
    localhost ~ # g++ main.cpp && ./a.out
    hallo
    hallo
    hallo
    localhost ~ # g++ -O2 main.cpp && ./a.out
    localhost ~ # cat main.cpp
    #include <iostream>
    using namespace std;
    
    void tuwas(){
    }
    
    int main(){
            char ch=0;
            for(int i=0;i<1000;++i){
                    tuwas();
                    if(!++ch)
                            cout<<"hallo\n";
            }
    }
    
    localhost ~ # gcc -v
    Using built-in specs.
    Target: i686-pc-linux-gnu
    Configured with: /var/tmp/portage/sys-devel/gcc-4.3.2-r3/work/gcc-4.3.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.3.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.3.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.3.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.3.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --disable-fixed-point --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.3.2-r3 p1.6, pie-10.1.5'
    Thread model: posix
    gcc version 4.3.2 (Gentoo 4.3.2-r3 p1.6, pie-10.1.5)
    

    naja, ich glaube es gibt keinen c++ compiler, der alle c++-spezialitäten beherrscht, die theoretisch möglich wären. dafür ist die sprache zu umfangreich und die möglichen permutationen von sprachmitteln sind einfach zu viele. das wird mit c++0x wohl noch schlimmer werden.

    Das hat nichts mit Permutationen zu tun. Es ist auch nicht nötig, daß ein Compiler alle Sprachmittel beherrscht. Was er aber nicht machen sollte, ist sie stillschweigend zu akzeptieren und dann falsches Compilat zu erzeugen.



  • Ich habe die Anleitung von StefanD durchgearbeitet. Das mit dem TDM hat ja nicht funktioniert. Bei Stefans Anleitung fehlen aber immer noch die Header und Libs! Sie fehlen auch dann noch wenn ich dieses 60 MB gcc-full Package herunterlade. Ich habe jetzt kurzerhand die 3.x Include/Lib Verzeichnisse genommen, das Lib Verzeichnis des 4.4 drüber kopiert und beides in des Verzeichnis des 4.4'er verschoben. Ergebnis eines Kompile Vorgangs: "Process terminated with status 1"

    PS: Den Installer habe ich auch bemerkt, kurze Zeit gejubelt und mich dann wieder über eine weitere 3.x Installation geärgert.



  • Evtl. Umgebungsvariable falsch gesetzt? Pm mich per Board oder ICQ, falls du eine Installationsanleitung haben willst.



  • Naja, das Include Verzeichnis ist halt leer. Die anderen Header scheinen nicht zu funktionieren, siehe Fehlermeldungen. Ich habe ihn runter geworfen und eines von diesen TDM Setups (tdm-mingw-1.905.0-4.4.0-2.exe) installiert (nicht die zum rüber kopieren) nun kann ich mit CodeBlocks&GCC kompilieren. Das war weit schwieriger als ich gedacht hätte!

    Falls Du es grad aus dem Ärmel schütteln kannst und nicht erst googlen mußt: Welche tar.gz hätte ich noch herunter laden müssen um auch die Header&Libs zu bekommen? (Wenn ich mal updaten will, ohne auf so ein TDM Setup angewiesen zu sein.)



  • Nöe, wo Mingw die libstdc++ versteckt hat, weiss ich nicht. Neben bei sollte ich mal ausprobieren, ob die parallele Versionen der Algos mitdrin sind. Wäre ein Drama wenn nicht XD



  • Mukki schrieb:

    (Wenn ich mal updaten will, ohne auf so ein TDM Setup angewiesen zu sein.)

    Immer, wenn ich update, schreibe ich die Downloadlinks in eine Datei. Hat mir gelegentlich schon Arbeit gespart.

    rem GMP Runtime [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gmp-4.2.4-mingw32-dll.tar.gz?use_mirror=dfn
    
    rem libiconv Runtime [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/MSYS%20libiconv/libiconv-1.13.1-1/libiconv-1.13.1-1-msys-1.0.11-bin.tar.lzma?use_mirror=dfn
    
    rem MPFR Runtime [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/mpfr-2.4.1-mingw32-dll.tar.gz?use_mirror=dfn
    
    rem POSIX Threads for Win32 Runtime [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/pthreads-w32-2.8.0-mingw32-dll.tar.gz?use_mirror=dfn
    
    rem GCC C [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gcc-core-4.4.0-mingw32-bin.tar.gz?use_mirror=dfn
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gcc-core-4.4.0-mingw32-dll.tar.gz?use_mirror=dfn
    
    rem mingw-runtime [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/MinGW%20Runtime/Current%20Release_%20mingwrt-3.15.2/mingwrt-3.15.2-mingw32-dev.tar.gz?use_mirror=dfn
    
    rem binutils [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/GNU%20Binutils/Current%20Release_%20GNU%20binutils-2.19.1/binutils-2.19.1-mingw32-bin.tar.gz?use_mirror=dfn
    
    rem win32 api [REQUIRED]
    wget -c http://downloads.sourceforge.net/project/mingw/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-dev.tar.gz?use_mirror=dfn
    
    rem mingw32-make [NICE]
    wget -c http://downloads.sourceforge.net/project/mingw/GNU%20Make/Current%20Release_%20mingw32-make-3.81-20080326/mingw32-make-3.81-20080326-3.tar.gz?use_mirror=switch
    
    rem GCC C++ [NICE]
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gcc-c%2B%2B-4.4.0-mingw32-dll.tar.gz?use_mirror=dfn
    wget -c http://downloads.sourceforge.net/project/mingw/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gcc-c%2B%2B-4.4.0-mingw32-bin.tar.gz?use_mirror=dfn
    
    rem GDB
    rem wget -c http://downloads.sourceforge.net/project/mingw/GNU%20Source-Level%20Debugger/Current%20Release_%20gdb-5.2.1/gdb-5.2.1-1.exe?use_mirror=switch
    


  • volkard schrieb:

    ;fricky schrieb:

    ^^glaub ich nicht, dass er das nicht kann. irgendwann ist 'ch' 0 und dann muss er was ausgeben. sowas wäre schon in der version 0.x aufgefallen.

    Hört, hört. Wenn ich sowas sage, erwarte ich, daß Du es erst testest, und nicht dumm widersprichst.

    ok, bleib ganz entspannt, jetzt hab ichs doch mal getestet. bei mir hagelts 'hallos'. mein mingw ist der, der bei codeblocks dabei war. irgendwas musst du falsch gemacht haben.
    🙂



  • ;fricky schrieb:

    ok, bleib ganz entspannt, jetzt hab ichs doch mal getestet. bei mir hagelts 'hallos'. mein mingw ist der, der bei codeblocks dabei war. irgendwas musst du falsch gemacht haben.
    🙂

    Entweder hast Du kein -O2 gemacht, wie ich vorgemacht habe, oder die haben den Fehler neu hinzugefügt.

    C:\>gcc -v
    Es werden eingebaute Spezifikationen verwendet.
    Ziel: mingw32
    Konfiguriert mit: ../gcc-4.4.0/configure --enable-languages=c,ada,c++,fortran,ja
    va,objc,obj-c++ --disable-sjlj-exceptions --enable-shared --enable-libgcj --enab
    le-libgomp --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --ena
    ble-version-specific-runtime-libs --prefix=/mingw --with-gmp=/mingw/src/gmp/root
     --with-mpfr=/mingw/src/mpfr/root --build=mingw32
    Thread-Modell: win32
    gcc-Version 4.4.0 (GCC)
    

    ist auch krank.

    Zeig mal deine.



  • das spuckt er aus:

    Compiling: main.cpp
    Reading specs from C:/Programme/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/specs
    Configured with: ../gcc-3.4.5/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug
    Thread model: win32
    gcc version 3.4.5 (mingw-vista special)
     C:/Programme/CodeBlocks/MinGW/bin/../libexec/gcc/mingw32/3.4.5/cc1plus.exe -quiet -v -iprefix C:\Programme\CodeBlocks\MinGW\bin/../lib/gcc/mingw32/3.4.5/ C:\Dokumente und Einstellungen\testuser\Desktop\testuser\cpp_test\main.cpp -quiet -dumpbase main.cpp -auxbase-strip obj\Debug\main.o -g -O2 -Wall -version -fexceptions -o C:\DOKUME~1\testuser\LOKALE~1\Temp/ccuOy12B.s
    #include "..." search starts here:
    #include <...> search starts here:
     C:/Programme/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5
     C:/Programme/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/mingw32
     C:/Programme/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward
     C:/Programme/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include
     C:/Programme/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/include
    End of search list.
    GNU C++ version 3.4.5 (mingw special) (mingw32)
    	compiled by GNU C version 3.4.5 (mingw special).
    GGC heuristics: --param ggc-min-expand=64 --param ggc-min-heapsize=65470
     as -o obj\Debug\main.o C:\DOKUME~1\testuser\LOKALE~1\Temp/ccuOy12B.s
    Linking console executable: bin\Debug\cpp_test.exe
    Output size is 1.26 MB
    Process terminated with status 0 (0 minutes, 4 seconds)
    0 errors, 0 warnings
    

    🙂


Anmelden zum Antworten