Я безуспешно пытаюсь скомпилировать freetype с MinGW / MSYS
Вот что я делаю:
С cmd.exe
Я переключаюсь на MSYS
:
C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5>bash
А затем вызвать configure
script
bash-3.1$ ./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 `make' again to build the library,
or `make refdoc' to build the API reference (the latter needs python).
cd builds/unix; ./configure
checking build system type... i686-pc-mingw32
[------ Deleted some 121 lines because they seem irrelevant for the problem ------]
config.status: creating ftconfig.h
make: Nothing to be done for `unix'.
После настройки freetype я хочу использовать make
для компиляции исходных кодов:
bash-3.1$ make
/bin/sh: cygpath: command not found
config.mk:36: /builds/freetype.mk: No such file or directory
config.mk:57: /builds/unix/install.mk: No such file or directory
builds/toplevel.mk:158: /builds/modules.mk: No such file or directory
make: *** No rule to make target `/builds/modules.mk'. Stop.
Кажется, проблема в cygpath , что странно, потому что я не установил cygwin.
С момента получения инструкции по компиляции gnu make я проверил это:
bash-3.1$ make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i686-pc-msys
Что я делаю не так?
Редактировать : В каталоге также есть Makefile.mingw
.Попытка запустить процесс компиляции с make -f Makefile.mingw
также не завершается, возвращая сообщение ¨make: *** No rule to make target 'MFSED', needed by 'all'. Stop.
.
Обновление Хорошо, я провел некоторые детективные расследования по этому вопросу, и этокажется, что проблема точно , потому что я не установил CygWin.У меня есть такое предположение, потому что cygpath
- это утилита CygWin ( См. Здесь ), которая конвертирует unix-пути в windows-пути и наоборот.
Теперь ¨find . -type f -exec grep -l cygpath {} \;
находит несколько местгде используется cygpath
:
- . / builds / unix / aclocal.m4
- . / builds / unix / configure
- . / builds / unix /unix-def.in
- . / builds / unix / unix-def.mk
- . / patches / freetype-2.3.4.diff
- . / patches / freetype-2.3.5 / builds / unix / unix-def.mk
- . / Patches / freetype-2.3.5.diff
и я думаю, что мне придется что-то изменитьв одном или нескольких из этих мест, чтобы исправить сборку.Правильно?Я все еще надеюсь, что кто-то с большим знанием всего процесса ./configure-build может дать мне подсказку по этому вопросу.
Обновление II : с rubenvb's ответ, я подумал, что я мог бы попробовать ./configure --build=i686-pc-mingw32
и затем удалить чтение строки
TOP_DIR := $(shell cd $(TOP_DIR); cygpath -m `pwd`)
в builds/unix/unix-def.mk
и затем изменить чтение строки
RCTOOL_COMPILE = RCTOOL
в
RCTOOL_COMPILE = $(RCTOOL)
в ./builds/freetype.mk
, а также копирование http://gnuwin32.sourceforge.net/rctool.sh.txt в c:\mingw\bin
(поскольку были странные ошибки из-за пропущенных rctool.sh
) и затем запустите процесс компиляции с make
.
Теперь компиляция исходных файлов, кажется, (по крайней мере, частично), наконец, завершена, хотя я получил много такие предупреждения, как
./src/base/ftcalc.c:75:3: warning: 'FT_RoundFix' redeclared without dllimport attribute: previous dllimport ignored
Но компоновщик не может связать файлы * .o, поскольку существует много неопределенных ссылок, таких как
C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5/src/base/ftinit.c:89: undefined reference to `_imp__FT_Add_Module'
Я полагаю, что предупреждения о компиляции не связаны сошибки компоновщика.
Итак, что теперь?