我试图用MinGW / MSYS
编译freetype是不成功的这就是我的所作所为:
从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: *** No rule to make target 'MFSED', needed by 'all'. Stop.
。
更新好的,我已经对此事做了一些侦探调查,似乎问题是精确因为我没有安装CygWin。我有这个假设,因为cygpath
是一个CygWin实用程序(See here),它将unix路径转换为windows路径,反之亦然。
现在,¨find . -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)
<{1>}中的以及将http://gnuwin32.sourceforge.net/rctool.sh.txt复制到./builds/freetype.mk
(由于缺少c:\mingw\bin
而出现奇怪错误)和然后启动使用rctool.sh
编译过程。
现在,源文件的编译似乎(至少部分地)最终完成,尽管我已经许多警告,如
make
但链接器无法链接* .o文件,因为有许多未定义的引用,如
./src/base/ftcalc.c:75:3: warning: 'FT_RoundFix' redeclared without dllimport attribute: previous dllimport ignored
我猜编译警告与链接器错误无关。
那么,现在呢?
答案 0 :(得分:4)
通常,在Windows上编译unix / linux软件可以有两种方式:
使用MSYS或Cygwin中的现有配置脚本。
使用cmd.exe(windows shell)中提供的mingw makefile。
你尝试了第一次(但我认为不够努力),并且第二次尝试错了:
尝试传递--host=i686-pc-mingw32
进行配置。脚本告诉你它检测到unix构建,这是非常错误的,你可以看到,它不起作用。
您也可以直接从cmd.exe使用mingw32-make
来使用您找到的makefile.mingw。它应该可以正常工作。
尝试在主源目录中找到README或INSTALL文件。它应该告诉你该做什么,并且可能有一个特定于Windows的部分。