From: Wesley W. T. <we...@te...> - 2008-01-29 08:41:32
|
I've been trying to use the native toolchains for some time now on windows 2003 x64. However, they always fail to compile hello world. I downloaded mingw-w64-bin_x86-64-mingw_20080116.tar.bz2 and unpacked it into c:\ As I understand it, the lib directory/etc are already in the correct place with this tarball, so I changed nothing. Then I startup cmd.exe and try to compile hello world: > C:\>type hello.c > #include <stdio.h> > > int main() { > printf("Hello world %u\n", sizeof(int*)); > return 0; > } > > C:\>\root-x86_64-pc-mingw32\bin\gcc.exe -Wall -O2 -v hello.c -o > hello.exe > Using built-in specs. > Target: x86_64-pc-mingw32 > Configured with: ../build/gcc-svn/gcc/configure --target=x86_64-pc- > mingw32 --pre > fix=/tmp/toolchain/root-x86_64-pc-mingw32 --with-sysroot=/tmp/ > toolchain/root-x86 > _64-pc-mingw32 --host=x86_64-pc-mingw32 > Thread model: win32 > gcc version 4.3.0 20080116 (experimental) (GCC) > COLLECT_GCC_OPTIONS='-Wall' '-O2' '-v' '-o' 'hello.exe' '- > mtune=generic' > c:/root-x86_64-pc-mingw32/bin/../libexec/gcc/x86_64-pc- > mingw32/4.3.0/cc1.exe -q > uiet -v -iprefix c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc- > mingw32/4.3. > 0/ -isysroot c:\root-x86_64-pc-mingw32\bin\../../root-x86_64-pc- > mingw32 hello.c > -quiet -dumpbase hello.c -mtune=generic -auxbase hello -O2 -Wall - > version -o C:\ > DOCUME~1\terpstra\LOCALS~1\Temp/ccwPaaaa.s > ignoring nonexistent directory "c:\root-x86_64-pc-mingw32\bin\../../ > root-x86_64- > pc-mingw32/tmp/toolchain/root-x86_64-pc-mingw32/lib/gcc/x86_64-pc- > mingw32/4.3.0/ > ../../../../include" > ignoring nonexistent directory "c:\root-x86_64-pc-mingw32\bin\../../ > root-x86_64- > pc-mingw32/mingw/include64" > #include "..." search starts here: > #include <...> search starts here: > c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc-mingw32/4.3.0/ > include > c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc-mingw32/4.3.0/ > include-fixed > c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc- > mingw32/4.3.0/../../../../x8 > 6_64-pc-mingw32/include > c:/root-x86_64-pc-mingw32/lib/gcc/../../lib/gcc/x86_64-pc- > mingw32/4.3.0/include > > c:/root-x86_64-pc-mingw32/lib/gcc/../../lib/gcc/x86_64-pc- > mingw32/4.3.0/include > -fixed > c:/root-x86_64-pc-mingw32/lib/gcc/../../lib/gcc/x86_64-pc- > mingw32/4.3.0/../../. > ./../x86_64-pc-mingw32/include > End of search list. > GNU C (GCC) version 4.3.0 20080116 (experimental) (x86_64-pc-mingw32) > compiled by GNU C version 4.3.0 20080116 (experimental), GMP > version 4.2 > .2, MPFR version 2.3.0. > GGC heuristics: --param ggc-min-expand=30 --param ggc-min- > heapsize=4096 > Compiler executable checksum: b61a5e600e25f4014f6afcb33e328cf6 > hello.c: In function 'main': > hello.c:4: warning: format '%u' expects type 'unsigned int', but > argument 2 has > type 'long long unsigned int' > hello.c:6: internal compiler error: Segmentation fault > Please submit a full bug report, > with preprocessed source if appropriate. > See <http://gcc.gnu.org/bugs.html> for instructions. > > C:\> I'm guessing this should work and that most people are using windows xp x64. Am I doing something wrong or does a native mingw-w64 die on windows 2003? What can I do to help track this down? |
From: Kai T. <Kai...@on...> - 2008-01-29 09:18:53
|
> I've been trying to use the native toolchains for some time now on > windows 2003 x64. However, they always fail to compile hello world. > > I downloaded mingw-w64-bin_x86-64-mingw_20080116.tar.bz2 and unpacked > it into c:\ > As I understand it, the lib directory/etc are already in the correct > place with this tarball, so I changed nothing. > Then I startup cmd.exe and try to compile hello world: > > > C:\>type hello.c > > #include <stdio.h> > > > > int main() { > > printf("Hello world %u\n", sizeof(int*)); > > return 0; > > } > > > > C:\>\root-x86_64-pc-mingw32\bin\gcc.exe -Wall -O2 -v hello.c -o > > hello.exe > > Using built-in specs. > > Target: x86_64-pc-mingw32 > > Configured with: ../build/gcc-svn/gcc/configure --target=x86_64-pc- > > mingw32 --pre > > fix=/tmp/toolchain/root-x86_64-pc-mingw32 --with-sysroot=/tmp/ > > toolchain/root-x86 > > _64-pc-mingw32 --host=x86_64-pc-mingw32 > > Thread model: win32 > > gcc version 4.3.0 20080116 (experimental) (GCC) > > COLLECT_GCC_OPTIONS='-Wall' '-O2' '-v' '-o' 'hello.exe' '- > > mtune=generic' > > c:/root-x86_64-pc-mingw32/bin/../libexec/gcc/x86_64-pc- > > mingw32/4.3.0/cc1.exe -q > > uiet -v -iprefix c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc- > > mingw32/4.3. > > 0/ -isysroot c:\root-x86_64-pc-mingw32\bin\../../root-x86_64-pc- > > mingw32 hello.c > > -quiet -dumpbase hello.c -mtune=generic -auxbase hello -O2 -Wall - > > version -o C:\ > > DOCUME~1\terpstra\LOCALS~1\Temp/ccwPaaaa.s > > ignoring nonexistent directory "c:\root-x86_64-pc-mingw32\bin\../../ > > root-x86_64- > > pc-mingw32/tmp/toolchain/root-x86_64-pc-mingw32/lib/gcc/x86_64-pc- > > mingw32/4.3.0/ > > ../../../../include" > > ignoring nonexistent directory "c:\root-x86_64-pc-mingw32\bin\../../ > > root-x86_64- > > pc-mingw32/mingw/include64" > > #include "..." search starts here: > > #include <...> search starts here: > > c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc-mingw32/4.3.0/ > > include > > c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc-mingw32/4.3.0/ > > include-fixed > > c:\root-x86_64-pc-mingw32\bin\../lib/gcc/x86_64-pc- > > mingw32/4.3.0/../../../../x8 > > 6_64-pc-mingw32/include > > c:/root-x86_64-pc-mingw32/lib/gcc/../../lib/gcc/x86_64-pc- > > mingw32/4.3.0/include > > > > c:/root-x86_64-pc-mingw32/lib/gcc/../../lib/gcc/x86_64-pc- > > mingw32/4.3.0/include > > -fixed > > c:/root-x86_64-pc-mingw32/lib/gcc/../../lib/gcc/x86_64-pc- > > mingw32/4.3.0/../../. > > ./../x86_64-pc-mingw32/include > > End of search list. > > GNU C (GCC) version 4.3.0 20080116 (experimental) (x86_64-pc-mingw32) > > compiled by GNU C version 4.3.0 20080116 (experimental), GMP > > version 4.2 > > .2, MPFR version 2.3.0. > > GGC heuristics: --param ggc-min-expand=30 --param ggc-min- > > heapsize=4096 > > Compiler executable checksum: b61a5e600e25f4014f6afcb33e328cf6 > > hello.c: In function 'main': > > hello.c:4: warning: format '%u' expects type 'unsigned int', but > > argument 2 has > > type 'long long unsigned int' > > hello.c:6: internal compiler error: Segmentation fault > > Please submit a full bug report, > > with preprocessed source if appropriate. > > See <http://gcc.gnu.org/bugs.html> for instructions. > > > > C:\> > > I'm guessing this should work and that most people are using windows > xp x64. Am I doing something wrong or does a native mingw-w64 die on > windows 2003? What can I do to help track this down? Have you add to your PATH environment variable the /bin folder of the package? I have no Windows 2003 at hand, so I can try to reproduce this. If you choose a mingw32 cross-compiler, does the same thing happens? Cheers, i.A. Kai Tietz | (\_/) This is Bunny. Copy and paste Bunny | (='.'=) into your signature to help him gain | (")_(") world domination. |
From: Wesley W. T. <we...@te...> - 2008-02-04 00:34:52
|
On Jan 29, 2008, at 10:18 AM, Kai Tietz wrote: >> I'm guessing this should work and that most people are using windows >> xp x64. Am I doing something wrong or does a native mingw-w64 die on >> windows 2003? What can I do to help track this down? > > Have you add to your PATH environment variable the /bin folder of the > package? Yes, now. It makes no difference. It doesn't crash processing the -M option during compile, but even using the preprocessor (-E) causes the ICE. I notice that when using (-S) it gets far enough to output the first 5 lines of assembler to hello.s. > I have no Windows 2003 at hand, so I can try to reproduce this. If you > choose a mingw32 cross-compiler, does the same thing happens? The mingw32 cross compiler from the same date (20080116) works. It also works without modifying the path. Programs compiled by the mingw32->win64 cross compiler do not segfault in general. Just gcc has this honour. Sorry for the late reply, but I wasn't at that Windows 2003 machine again until now. |
From: NightStrike <nig...@gm...> - 2008-02-04 01:49:38
|
On 2/3/08, Wesley W. Terpstra <we...@te...> wrote: > On Jan 29, 2008, at 10:18 AM, Kai Tietz wrote: > >> I'm guessing this should work and that most people are using windows > >> xp x64. Am I doing something wrong or does a native mingw-w64 die on > >> windows 2003? What can I do to help track this down? > > > > Have you add to your PATH environment variable the /bin folder of the > > package? > > Yes, now. It makes no difference. > > It doesn't crash processing the -M option during compile, but even > using the preprocessor (-E) causes the ICE. > > I notice that when using (-S) it gets far enough to output the first 5 > lines of assembler to hello.s. Unfortunately, the native compiler doesn't work for g++ and fortran on any version of 64-bit windows. The native gcc should work. Which are you using? > > I have no Windows 2003 at hand, so I can try to reproduce this. If you > > choose a mingw32 cross-compiler, does the same thing happens? > > The mingw32 cross compiler from the same date (20080116) works. It > also works without modifying the path. > > Programs compiled by the mingw32->win64 cross compiler do not segfault > in general. Just gcc has this honour. > > Sorry for the late reply, but I wasn't at that Windows 2003 machine > again until now. No worries. Hopefully, Kai has an idea about this. I'm past my area of expertise. |
From: Kai T. <Kai...@on...> - 2008-01-29 09:43:52
|
Hi Wespley, I just noticed a bug in your test program (as the compiler even told :) Your program > > C:\>type hello.c > > #include <stdio.h> > > > > int main() { > > printf("Hello world %u\n", sizeof(int*)); > > return 0; > > } uses '%u' for printing a sizeof, which has type size_t. And size_t is for _WIN64 64-bit wide. So you should use instead '%I64u' or just '%Iu' to prevent this warning. Cheers, i.A. Kai Tietz | (\_/) This is Bunny. Copy and paste Bunny | (='.'=) into your signature to help him gain | (")_(") world domination. |
From: Wesley W. T. <we...@te...> - 2008-01-29 13:30:23
|
On Jan 29, 2008, at 10:43 AM, Kai Tietz wrote: > I just noticed a bug in your test program (as the compiler even > told :) > > Your program uses '%u' for printing a sizeof, which has type size_t. > And size_t is for > _WIN64 64-bit wide. So you should use instead '%I64u' or just '%Iu' to > prevent this warning. Actually, to fix this "bug" you would have to do something far more hideous: printf("Hello world %"PRIuMAX"\n", (uintmax_t)(sizeof(int*)); %lu is no good b/c long = 32 bit as well %I64u is no good b/c it's windows specific |