2013-04-12 5 views
1

Привет, я пытаюсь скомпилировать gmp, потому что мне это нужно для Perl-модуля. Мне нужно установить eveyrthing вручную, потому что у машины есть доступ к Интернету. Я запущенной настроить и использовать эту команду в Cygwin в папке GMP:Build GMP в Windows 32-бит

./configure --prefix=C:\gmp --disable-static --enable-shared 

Теперь, также работал без проблем и создал Makefile теперь, когда я бегу сделать это происходит:

$ make 
gcc -std=gnu99 `test -f 'gen-fac.c' || echo './'`gen-fac.c -o gen-fac.exe 
./gen-fac 32 0 >fac_table.h || (rm -f fac_table.h; exit 1) 
gcc -std=gnu99 `test -f 'gen-fib.c' || echo './'`gen-fib.c -o gen-fib.exe 
./gen-fib header 32 0 >fib_table.h || (rm -f fib_table.h; exit 1) 
./gen-fib table 32 0 >mpn/fib_table.c || (rm -f mpn/fib_table.c; exit 1) 
gcc -std=gnu99 `test -f 'gen-bases.c' || echo './'`gen-bases.c -o gen-bases.exe -lm 
./gen-bases header 32 0 >mp_bases.h || (rm -f mp_bases.h; exit 1) 
./gen-bases table 32 0 >mpn/mp_bases.c || (rm -f mpn/mp_bases.c; exit 1) 
gcc -std=gnu99 `test -f 'gen-trialdivtab.c' || echo './'`gen-trialdivtab.c -o gen-trialdivtab.exe -lm 
./gen-trialdivtab 32 8000 >trialdivtab.h || (rm -f trialdivtab.h; exit 1) 
gcc -std=gnu99 `test -f 'gen-jacobitab.c' || echo './'`gen-jacobitab.c -o gen-jacobitab.exe 
./gen-jacobitab >mpn/jacobitab.h || (rm -f mpn/jacobitab.h; exit 1) 
gcc -std=gnu99 `test -f 'gen-psqr.c' || echo './'`gen-psqr.c -o gen-psqr.exe -lm 
./gen-psqr 32 0 >mpn/perfsqr.h || (rm -f mpn/perfsqr.h; exit 1) 
make all-recursive 
make[1]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp' 
Making all in tests 
make[2]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests' 
Making all in . 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests' 
make[3]: Für das Ziel »all-am« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests' 
Making all in devel 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/devel' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/devel' 
Making all in mpn 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpn' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpn' 
Making all in mpz 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpz' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpz' 
Making all in mpq 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpq' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpq' 
Making all in mpf 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpf' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/mpf' 
Making all in rand 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/rand' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/rand' 
Making all in misc 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/misc' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/misc' 
Making all in cxx 
make[3]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/cxx' 
make[3]: Für das Ziel »all« ist nichts zu tun. 
make[3]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests/cxx' 
make[2]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/tests' 
Making all in mpn 
make[2]: Entering directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/mpn' 
/bin/sh ../libtool --tag=CC --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_`echo fib_table | sed 's/_$//'`  -m32 -O2 -pedantic -fomit-frame-pointer -mtune=corei7 -march=corei7 -c -o fib_table.lo fib_table.c 
libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_fib_table -m32 -O2 -pedantic -fomit-frame-pointer -mtune=corei7 -march=corei7 -c fib_table.c -DDLL_EXPORT -DPIC -o .libs/fib_table.o 
In file included from ../gmp-impl.h:134:0, 
       from fib_table.c:4: 
../gmp-mparam.h:1:1: error: expected identifier or '(' before '!' token 
../gmp-mparam.h:1:1: error: stray '\377' in program 
../gmp-mparam.h:1:1: error: stray '\376' in program 
../gmp-mparam.h:1:14: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:16: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:18: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:20: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:22: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:24: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:26: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:28: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:30: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:32: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:34: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:36: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:38: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:40: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:42: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:44: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:46: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:48: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:50: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:52: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:54: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:56: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:58: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:60: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:62: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:64: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:66: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:68: warning: null character(s) ignored [enabled by default] 
../gmp-mparam.h:1:70: warning: null character(s) ignored [enabled by default] 
In file included from ../gmp-impl.h:144:0, 
       from fib_table.c:4: 
e:\fagprogramme\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/inttypes.h:272:1: error: unknown type name 'wchar_t' 
e:\fagprogramme\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/inttypes.h:273:29: error: unknown type name 'wchar_t' 
e:\fagprogramme\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/inttypes.h:274:1: error: unknown type name 'wchar_t' 
e:\fagprogramme\mingw\bin\../lib/gcc/mingw32/4.7.1/../../../../include/inttypes.h:275:9: error: unknown type name 'wchar_t' 
Makefile:389: recipe for target `fib_table.lo' failed 
make[2]: *** [fib_table.lo] Error 1 
make[2]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp/mpn' 
Makefile:833: recipe for target `all-recursive' failed 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/cygdrive/e/FAGProgramme/Perl Modules/gmp' 
Makefile:656: recipe for target `all' failed 
make: *** [all] Error 2 

Теперь я не знаю, что делать. Я также пробовал его без каких-либо параметров, он по-прежнему дает ту же ошибку.

+0

Я исправил ошибку, установив gcc-core, gcc-g ++ в cygwin, но все же ту же ошибку в конце. – alexj

ответ

1

2 1/2 года спустя, но я могу ответить на этот вопрос, возможно, для тех, кто работает с аналогичной проблемой (как я !).

Открывает Cygwin терминал, создать небольшой текстовый файл с именем hello.txt и поставить некоторое небольшое количество текста в нем, а затем выполните следующую команду:

ln -s hello.txt link.txt 

Теперь cat link.txt покажет текст. Однако, если вы заходите в Windows, откройте Notebook и откройте link.txt from там, вы увидите некоторые очень странные персонажи. Вы можете увидеть «hello.txt». Или ничего.

Причина в том, что команда ln cygwin создает некую поддельную ссылку, которую знает только cygwin. Программы Windows и Windows не знают, что это ссылка cygwin, поэтому они просто открывают файл и видят поддельный материал cygwin.

Теперь, если вы посмотрите на команду, которая не удалась:

/bin/sh ../libtool --tag=CC --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_`echo fib_table | sed 's/_$//'`  -m32 -O2 -pedantic -fomit-frame-pointer -mtune=corei7 -march=corei7 -c -o fib_table.lo fib_table.c 
libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_fib_table -m32 -O2 -pedantic -fomit-frame-pointer -mtune=corei7 -march=corei7 -c fib_table.c -DDLL_EXPORT -DPIC -o .libs/fib_table.o 

Вы увидите, что Libtool работает GCC и GCC должны попытаться в какой-то момент, чтобы открыть gmp-mparam.h, который является ссылкой. Поскольку он читает его как мусор вместо того, с чем связан gmp-mparam.h, это должно означать, что gcc использует некоторую библиотеку Windows для чтения файлов. Итак, gcc терпит неудачу.

Эта ссылка была сделана config.status, когда вы запустили configure.

Теперь это сделать:

rm link.txt 
export CYGWIN=winsymlinks 
ln -s hello.txt link.txt 

Теперь оба cat link.txt и ноутбуков оба должны показать содержимое hello.txt. Причина в том, что установка CYGWIN=winsymlinks сообщает cygwin создавать файлы ссылок Windows. Узнайте больше о ссылках cygwin в Chapter 3 of the Cygwin User's Guide.

Теперь, когда задана переменная окружения CYGWIN, запустите configure еще раз, и она воссоздает ссылки, используя «правильные» файлы ссылок Windows.

Любые ошибки, кроме проблемы error: stray '\377' in program, имеют другие причины.