Я безуспешно пытаюсь скомпилировать freetype с помощью MinGW / MSYS
Вот что я делаю:
Из cmd.exe
я переключаюсь на MSYS
:
C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5>bash
И затем вызываю сценарий configure
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: *** Нет правила для создания целевого файла MFSED, необходимого для всех '. Стоп.
.
Обновление Хорошо, я провел детективное расследование по этому поводу, и похоже, что проблема точно , потому что я не установил CygWin. У меня такое предположение, потому что cygpath
- это утилита CygWin ( См. Здесь ), которая преобразует пути unix в пути Windows и наоборот.
Итак, ¨найти. -type f -exec grep -l cygpath {} \;
находит несколько мест, где используется cygpath
:
, и я думаю, что мне придется измените что-нибудь в одном или нескольких из этих мест, чтобы исправить сборку. Верно? Я все еще надеюсь, что кто-нибудь, обладающий более глубокими знаниями обо всем процессе ./configure-build, сможет дать мне подсказку по этой проблеме.
Обновление II : из ответа rubenvb я решил, что могу попробовать ./ 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'
, я полагаю, что предупреждения компиляции не связаны с ошибками компоновщика.
Итак, что теперь?