2013-04-12 119 views
1

你好我正在編譯gmp,因爲我需要它爲Perl模塊。我必須手動安裝eveyrthing,因爲機器可以訪問互聯網。我拼命地跑配置並在Cygwin中的GMP文件夾中使用這個命令:在Windows 32位構建GMP

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

現在還工作沒有問題,並建立了生成文件現在,當我運行make出現這種情況:

$ 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年半過去了,但我也許可以回答這個問題的人遇到了類似的問題(像我!)。

打開一個cygwin終端,創建一個名爲hello.txt一個小文本文件,並把文本一些少量的在裏面,然後執行此命令:

ln -s hello.txt link.txt 

現在,cat link.txt會顯示您的文字。但是,如果你進入Windows,打開Notebook並在那裏打開link.txt from,你會看到一些非常奇怪的字符。您可能會看到「hello.txt」。或無。

原因是cygwin的ln命令創建了一種只有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庫來讀取文件。所以,海灣合作委員會失敗。

此鏈接由config.status創建,當您運行configure時。

現在,這樣做:

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

現在無論cat link.txt和筆記本都應該表現出hello.txt內容。原因是設置CYGWIN=winsymlinks告訴cygwin創建Windows鏈接文件。在Chapter 3 of the Cygwin User's Guide閱讀更多關於cygwin鏈接。

現在已設置CYGWIN環境變量,再次運行configure,它將使用「正確的」Windows鏈接文件重新創建鏈接。

error: stray '\377' in program問題以外的任何錯誤都有其他原因。