使用MinGW / MSYS编译freetype2时出现问题

用MinGW和MSYS编译freetype2似乎有问题

我试图在freetype源代码的干净的副本上,以及一个没有损坏的MinGW和MSYS:

Andrew@MCARDLE-PC ~/documents/code $ cd freetype-2.3.11 Andrew@MCARDLE-PC ~/documents/code/freetype-2.3.11 $ ./configure FreeType build system -- automatic system detection The following settings are used: platform unix compiler cc configuration directory ./builds/unix configuration rules ./builds/unix/unix.mk If this does not correspond to your system or settings please remove the file `config.mk' from this directory then read the INSTALL file for help. Otherwise, simply type `c:/code/mingw/bin/make' again to build the library, or `c:/code/mingw/bin/make refdoc' to build the API reference (the latter needs python). Generating modules list in ./objs/ftmodule.h... * module: truetype (Windows/Mac font files with extension *.ttf or *.ttc) * module: type1 (Postscript font files with extension *.pfa or *.pfb) * module: cff (OpenType fonts with extension *.otf) * module: cid (Postscript CID-keyed fonts, no known extension) * module: pfr (PFR/TrueDoc font files with extension *.pfr) * module: type42 (Type 42 font files with no known extension) * module: winfnt (Windows bitmap fonts with extension *.fnt or *.fon) * module: pcf (pcf bitmap fonts) * module: bdf (bdf bitmap fonts) * module: sfnt (helper module for TrueType & OpenType formats) * module: autofit (automatic hinting module) * module: pshinter (Postscript hinter module) * module: raster (monochrome bitmap renderer) * module: smooth (anti-aliased bitmap renderer) * module: smooth (anti-aliased bitmap renderer for LCDs) * module: smooth (anti-aliased bitmap renderer for vertical LCDs) * module: psaux (Postscript Type 1 & Type 2 helper module) * module: psnames (Postscript & Unicode Glyph name handling) done. cd builds/unix; ./configure checking build system type... i686-pc-mingw32 checking host system type... i686-pc-mingw32 checking for gcc... gcc checking for C compiler default output file name... a.exe checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... .exe checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for rm... rm -f checking for rmdir... rmdir checking for a BSD-compatible install... /bin/install -c checking for grep that handles long lines and -e... /c/code/mingw/bin/grep checking for egrep... /c/code/mingw/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking for unistd.h... (cached) yes checking for an ANSI C-conforming const... yes checking size of int... 4 checking size of long... 4 checking cpp computation of bit length in ftconfig.in works... yes checking for stdlib.h... (cached) yes checking for unistd.h... (cached) yes checking for getpagesize... yes checking for working mmap... no checking for memcpy... yes checking for memmove... yes checking for gzsetparams in -lz... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking whether CFLAGS includes -isysroot option... no checking for a sed that does not truncate output... /c/code/mingw/bin/sed checking for fgrep... /c/code/mingw/bin/grep -F checking for ld used by gcc... /c/code/mingw/bin/ld checking if the linker (/c/code/mingw/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /c/code/mingw/bin/nm checking the name lister (/c/code/mingw/bin/nm) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 8192 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking for /c/code/mingw/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... file_magic ^x86 archive import| ^x86 DLL checking for ar... ar checking for strip... strip checking for ranlib... ranlib checking command to parse /c/code/mingw/bin/nm output from gcc object... ok checking for dlfcn.h... no checking for as... as checking for dlltool... dlltool checking for objdump... (cached) objdump checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... c:\code\mingw\bin\sed.exe: -e expression #2, char 1: unknown command: `C' no checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC checking if gcc PIC flag -DDLL_EXPORT -DPIC works... c:\code\mingw\bin\sed.exe: -e expression #2, char 1: unknown command: `C' yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... c:\code\mingw\bin\sed.exe: -e expressio n #2, char 1: unknown command: `C' yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/c/code/mingw/bin/ld) supports shared libraries ... yes checking whether -lc should be explicitly linked in... yes checking dynamic linker characteristics... Win32 ld.exe checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' configure: creating ./config.status c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' config.status: creating unix-cc.mk c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' config.status: creating unix-def.mk config.status: creating freetype-config c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' config.status: creating freetype2.pc c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' config.status: creating ftconfig.h config.status: executing libtool commands c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' mv: cannot stat `libtoolT': No such file or directory cp: cannot stat `libtoolT': No such file or directory chmod: cannot access `libtool': No such file or directory c:\code\mingw\bin\sed.exe: -e expression #1, char 1: unknown command: `C' make: Nothing to be done for `unix'. Andrew@MCARDLE-PC ~/documents/code/freetype-2.3.11 $ make ./builds/unix/libtool --mode=compile gcc -pedantic -ansi -Ic:/Users/Andrew/docu ments/code/freetype-2.3.11/objs -I./builds/unix -Ic:/Users/Andrew/documents/code /freetype-2.3.11/include -c -Wall -g -O2 -DFT_CONFIG_OPTION_SYSTEM_ZLIB -DFT_CON FIG_CONFIG_H="<ftconfig.h>" -DFT2_BUILD_LIBRARY -DFT_CONFIG_MODULES_H="<ftmodule .h>" -oc:/Users/Andrew/documents/code/freetype-2.3.11/objs/ftsystem.lo c:/User s/Andrew/documents/code/freetype-2.3.11/src/base/ftsystem.c /bin/sh: ./builds/unix/libtool: No such file or directory make: *** [c:/Users/Andrew/documents/code/freetype-2.3.11/objs/ftsystem.lo] Erro r 127 Andrew@MCARDLE-PC ~/documents/code/freetype-2.3.11 $ 

在我看来,这两个问题似乎是不承认“C”,libtool没有被发现。

Solutions Collecting From Web of "使用MinGW / MSYS编译freetype2时出现问题"

解决办法是删除C:\ mingw \ bin \ sed.exe,这样MSYS sed就可以使用了。

在您的msys环境中, path/to/msys/installation/bin被挂载到/binMinGW通常挂载到/mingw

这个问题是由于sed.exe来自/mingw/bin (或者GnuWin32bin或者Gitbin等等,如果你已经安装的话),而不是从/bin ,因为/bin被包含毕竟这些在你的msys环境路径中。

解决方法是使用参数MSYS启动你的msys环境,这样/bin会在你的msys环境的PATH /mingw/bin之前(也可能是上面提到的其余部分),因此可以使用/bin sed.exe

在命令提示符下,假设您的Windows路径包含/path/to/msys/installation/ ,请使用

 $> msys.bat MSYS 

代替

 $> msys.bat 

启动msys

为了测试一切是否有序,请在msysecho $PATH来查看环境的PATH是否正确。