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

5

似乎在使用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>"  -o c:/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
$

在我看来,这两个问题似乎是sed无法识别“C”和找不到libtool。
2个回答

5
解决方案是删除C:\mingw\bin\sed.exe,这样MSYS的sed就会被使用。

2
在您的msys环境中,path/to/msys/installation/bin被挂载到/bin,而MinGW通常被挂载到/mingw
问题是由于sed.exe来自于/mingw/bin(或者如果您安装了GnuWin32Git等,也可能来自于它们的bin目录),而不是来自于/bin。因为在您的msys环境路径中,/bin排在这些目录后面。
解决方法是使用MSYS参数启动您的msys环境,这样/bin会排在/mingw/bin(以及上述其他目录)之前出现在您的msys环境变量PATH中,从而可以使用来自/binsed.exe
假设您的Windows路径包含/path/to/msys/installation/,则可以使用以下命令提示符:
$> msys.bat MSYS

替代

$> msys.bat

启动 msys

为了测试一切是否正常,在 msys 下输入 echo $PATH,查看环境变量 PATH 是否正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接