Sono unsucessful cercare di compilare freetype con MinGW/MSYSQualcuno ha compilato con successo freetype con MinGW/MSYS?
Ecco quello che faccio:
Da cmd.exe
posso passare a MSYS
:
C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5>bash
e quindi chiamare la configure
sceneggiatura
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'.
Dopo aver configurato freetype, voglio usare make
per compilare i sorgenti:
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.
Il problema sembra essere cygpath, che è strano, perché non ho installato Cygwin.
Dato che il mandato istruzioni di compilazione GNU Make, ho verificato questo:
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
Che cosa ho fatto di sbagliato?
Modifica: C'è anche Makefile.mingw
nella directory. Il tentativo di avviare il processo di compilazione con make -f Makefile.mingw
non ha ancora esito positivo, restituendo il messaggio ¨make: *** No rule to make target 'MFSED', needed by 'all'. Stop.
.
aggiornamento Ok, ho fatto alcune indagini detective la questione, e sembra che il problema è precisly perché non ho installato Cygwin. Ho questa supposizione perché cygpath
è un'utilità CygWin (See here) che converte i percorsi unix in percorsi Windows e viceversa.
Ora, un ¨find . -type f -exec grep -l cygpath {} \;
trovano diverse sedi in cui è usato 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/build s/unix/unix-def.mk
- ./patches/freetype-2.3.5.diff
e penso che avrei dovuto cambiare qualcosa in uno o più di questi luoghi per risolvere la build . Destra? Sto ancora sperando che qualcuno con più conoscenze sull'intero processo ./configure-build possa darmi un suggerimento sul problema.
Aggiornamento II: Da risposta di rubenvb, ho pensato che avrei potuto provare ./configure --build=i686-pc-mingw32
e quindi rimuovere la linea di lettura
TOP_DIR := $(shell cd $(TOP_DIR); cygpath -m `pwd`)
in builds/unix/unix-def.mk
e poi cambiamento della linea di lettura
RCTOOL_COMPILE = RCTOOL
a
RCTOOL_COMPILE = $(RCTOOL)
in ./builds/freetype.mk
e anche copiando http://gnuwin32.sourceforge.net/rctool.sh.txt-c:\mingw\bin
(dato che c'erano strani errori a causa della mancanza rctool.sh
) e poi avviare il processo di compilazione con make
.
Ora, la compilazione dei file di origine sembrava (almeno in parte) completa, finalmente, anche se ho avuto molti avvertimenti come
./src/base/ftcalc.c:75:3: warning: 'FT_RoundFix' redeclared without dllimport attribute: previous dllimport ignored
Ma il linker non è in grado di collegare il * .o file perché ci sono molti riferimenti non definiti come
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'
credo che la fase di compilazione avvertimenti non sono indipendenti agli errori del linker.
Quindi, che ora?
Grazie per il prezioso aiuto. Sfortunatamente, nessuna delle due opzioni è cambiata, entrambe producono ancora lo stesso errore relativo al 'cygpath' mancante. Ho trovato un README (in realtà chiamato * INSTALL.UNIX * e * UPGRADE.UNIX *, entrambi dichiarati esplicitamente per l'utilizzo con MinGW/MSYS) e mi dice di fare sostanzialmente ciò che ho già fatto.Non sostengo che non ci ho provato abbastanza duramente (anche se ho passato già 4-5 ore), ma non è il punto dell'intera cosa ./configure che non deve preoccuparsi di diverse piattaforme? –
Bene, cygpath non dovrebbe essere necessario in un ambiente msys. Sei sicuro che usare il makefile di mingw dalla console di windows (cmd.exe) usando mingw32-make non funzioni? – rubenvb
Quando apro un cmd.exe e cd in 'C: \ temp \ freetype-2.3.5-1 \ src \ freetype \ 2.3.5 \ freetype-2.3.5' e faccio un' mingw32-make.exe -f Makefile.mingw', dopo aver stampato un sacco di righe, stampa finalmente 'mingw32-make: *** Nessuna regola per rendere il target' MFSED ', necessario per 'all'. Stop. –