2011-02-13 27 views
9

Tôi unsucessful cố gắng để biên dịch freetype với MinGW/MSYSCó ai đó đã biên dịch thành công freetype với MinGW/MSYS không?

Dưới đây là những gì tôi làm:

Từ cmd.exe tôi chuyển sang để MSYS:

C:\temp\freetype-2.3.5-1\src\freetype\2.3.5\freetype-2.3.5>bash 

Và sau đó gọi kịch bản 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'. 

Sau khi định cấu hình freetype, tôi muốn sử dụng make biên dịch mã nguồn:

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. 

Vấn đề có vẻ là cygpath, đó là lạ, bởi vì tôi đã không được cài đặt Cygwin.

Kể từ khi nhiệm vụ hướng dẫn biên dịch gnu làm, tôi xác nhận điều này:

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 

Tôi phải làm gì sai?

Chỉnh sửa: Cũng có Makefile.mingw trong thư mục. Đang cố bắt đầu quá trình biên dịch với make -f Makefile.mingw không hoàn thành hoặc trả lại thư ¨make: *** No rule to make target 'MFSED', needed by 'all'. Stop..

Cập nhật Ok, tôi đã thực hiện một số cuộc điều tra thám tử vào vấn đề này, và có vẻ như vấn đề là precisly bởi vì tôi đã không được cài đặt Cygwin. Tôi có giả định này bởi vì cygpath là một tiện ích CygWin (See here) chuyển đổi các đường dẫn unix thành cửa sổ đường dẫn và ngược lại.

Bây giờ, một ¨find . -type f -exec grep -l cygpath {} \; tìm thấy một số địa điểm nơi cygpath được sử dụng:

  • ./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

và tôi nghĩ rằng tôi sẽ phải thay đổi điều gì đó trong một hoặc nhiều trong những địa điểm để sửa chữa xây dựng . Đúng? Tôi vẫn hy vọng rằng ai đó có nhiều kiến ​​thức hơn về toàn bộ quá trình .confconf-build có thể cho tôi một gợi ý về vấn đề này.

Cập nhật II: Từ câu trả lời rubenvb, tôi figured tôi có thể thử ./configure --build=i686-pc-mingw32sau đó loại bỏ các dòng đọc

TOP_DIR := $(shell cd $(TOP_DIR); cygpath -m `pwd`) 

trong builds/unix/unix-def.mksau đó thay đổi dòng đọc

RCTOOL_COMPILE = RCTOOL 

to

RCTOOL_COMPILE = $(RCTOOL) 

trong ./builds/freetype.mk và cũng sao chép http://gnuwin32.sourceforge.net/rctool.sh.txt-c:\mingw\bin (vì có một số lỗi lạ vì sự thiếu rctool.sh) và sau đó bắt đầu quá trình biên dịch với make.

Bây giờ, việc biên soạn các file nguồn dường như (ít nhất là một phần) hoàn chỉnh cuối cùng, mặc dù tôi đã nhận được nhiều cảnh báo như

./src/base/ftcalc.c:75:3: warning: 'FT_RoundFix' redeclared without dllimport attribute: previous dllimport ignored 

Nhưng mối liên kết không thể để liên kết các * .o tệp vì có nhiều tham chiếu chưa được xác định như

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' 

Tôi đoán cảnh báo biên dịch không liên quan đến lỗi trình liên kết.

Vì vậy, những gì bây giờ?

Trả lời

4

Nói chung, biên soạn phần mềm/linux unix trên Windows có thể đi theo hai cách:

  1. Sử dụng các cấu hình kịch bản hiện tại từ MSYS hoặc Cygwin.

  2. Sử dụng bộ tạo mẫu mingw được cung cấp từ cmd.exe (vỏ cửa sổ).

Bạn thử đầu tiên (nhưng tôi nghĩ không khó đủ), và làm những thứ hai một sai:

  1. Hãy thử qua --host=i686-pc-mingw32 để cấu hình. Kịch bản lệnh cho bạn biết nó phát hiện một bản dựng unix, đó là sai lầm khủng khiếp và như bạn thấy, không hoạt động.

  2. Bạn cũng có thể sử dụng mingw32-make trực tiếp từ cmd.exe để sử dụng makefile.mingw mà bạn đã tìm thấy. Nó sẽ hoạt động tốt.

Cố gắng định vị tệp README hoặc INSTALL trong thư mục nguồn chính. Nó sẽ cho bạn biết phải làm gì và có thể có một phần cửa sổ cụ thể.

+0

Cảm ơn sự giúp đỡ quý giá của bạn. Thật không may, không có tùy chọn thay đổi anyting, cả hai vẫn sản xuất các lỗi tương tự liên quan đến 'cygpath' mất tích. Tôi tìm thấy một README (thực sự được gọi là * INSTALL.UNIX * và * UPGRADE.UNIX *, cả hai đều được khai báo rõ ràng để sử dụng MinGW/MSYS) và cho tôi biết về cơ bản những gì tôi đã làm.Tôi không tranh luận rằng tôi đã không cố gắng hết sức (mặc dù tôi đã dành 4-5 giờ), nhưng không phải là điểm của toàn bộ ./configure điều không phải lo lắng về plattforms khác nhau? –

+1

Vâng, cygpath không cần thiết trong môi trường msys. Bạn có chắc chắn bằng cách sử dụng makefile mingw từ giao diện điều khiển cửa sổ (cmd.exe) bằng cách sử dụng mingw32-make không hoạt động? – rubenvb

+0

Khi tôi mở một cmd.exe và cd vào 'C: \ temp \ freetype-2.3.5-1 \ src \ freetype \ 2.3.5 \ freetype-2.3.5' và làm một' mingw32-make.exe -f Makefile.mingw', sau khi in rất nhiều dòng nó cuối cùng in 'mingw32-make: *** Không có quy tắc để làm cho mục tiêu' MFSED ', cần thiết bởi 'tất cả'. Stop.' –

Các vấn đề liên quan