Кто-нибудь успешно скомпилировал freetype с MinGW / MSYS? - PullRequest
9 голосов
/ 14 февраля 2011

Я безуспешно пытаюсь скомпилировать 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'

Я полагаю, что предупреждения о компиляции не связаны сошибки компоновщика.

Итак, что теперь?

1 Ответ

4 голосов
/ 15 февраля 2011

Как правило, компиляция программного обеспечения Unix / Linux в Windows может идти двумя путями:

  1. Использовать существующие скрипты конфигурирования из MSYS или Cygwin.

  2. Используйте поставляемый Mingw Makefile из cmd.exe (оболочка Windows).

Вы попробовали первый (но я думаю, что не достаточно сложно), а второй ошиблись:

  1. Попробуйте передать --host=i686-pc-mingw32 для настройки.Сценарий сообщает вам, что обнаруживает сборку Unix, что ужасно неправильно и, как вы можете видеть, не работает.

  2. Вы также можете использовать mingw32-make непосредственно из cmd.exe дляиспользуйте найденный вами makefile.mingw.Это должно работать нормально.

Попробуйте найти файл README или INSTALL в главном каталоге с исходным кодом.Он должен сказать вам, что делать, и, вероятно, имеет специальный раздел для окон.

...