Sau nỗi thất vọng tương tự, tôi đã chỉ là bây giờ biên soạn cả Phiên bản 32 bit và 64bit của libreadline 6.2 sử dụng MinGW-w64. Dưới đây là tôi làm thế nào tôi đã làm nó:
Layout của dev thư mục của tôi:
c:\dev\msys
c:\dev\mingw32
c:\dev\local32
c:\dev\mingw64
c:\dev\local64
Đặt một số biến môi trường cho 32 bit build:
export CPPFLAGS=-I/c/dev/local32/include
export LDFLAGS=-L/c/dev/local32/lib
termcap 1.3.1.
Chạy định cấu hình tập lệnh:
./configure --host=i686-w64_mingw32 --prefix=/c/dev/local32
Chỉnh sửa termcap.c và sửa một vài dòng ở trên cùng. Mine trông như thế này:
/* Emacs config.h may rename various library functions such as malloc. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifdef emacs
#include <lisp.h> /* xmalloc is here */
/* Get the O_* definitions for open et al. */
#include <sys/file.h>
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
//#ifdef HAVE_UNISTD_H
#include <unistd.h>
//#endif
#else /* not emacs */
//#ifdef STDC_HEADERS
#include <stdlib.h>
#include <string.h>
#define bcopy(b1,b2,len) (memmove((b2), (b1), (len)), (void) 0)
//#else
//char *getenv();
//char *malloc();
//char *realloc();
//#endif
và tparam.c
/* Emacs config.h may rename various library functions such as malloc. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifdef emacs
#include "lisp.h" /* for xmalloc */
#else
//#ifdef STDC_HEADERS
#include <stdlib.h>
#include <string.h>
//#else
//char *malloc();
//char *realloc();
//#endif
/* Do this after the include, in case string.h prototypes bcopy. */
//#if (defined(HAVE_STRING_H) || defined(STDC_HEADERS)) && !defined(bcopy)
#define bcopy(s, d, n) memcpy ((d), (s), (n))
//#endif
#endif /* not emacs */
Sửa đổi Makefile:
Line 23: CC = i686-w64-mingw32-gcc
Line 24: AR = i686-w64-mingw32-ar
Line 36: prefix = /c/dev/local32
Line 49: #oldincludedir = /usr/local
Sau đó gọi make install và nó sẽ biên dịch mà không cảnh báo hoặc lỗi.
readline 6.2
Đặt CPPFLAGS cùng và LDFLAGS biến như với termcap trước khi gọi:
./configure --prefix=/c/dev/local32 --host=i686-w64-mingw32 --enable-static --enable-shared
Sửa Makefile:
Line 40: AR = i686-w64-mingw32-ar
make install bây giờ sẽ biên dịch và cài đặt readline !
Nếu bạn muốn có một thư viện 64bit, thay thế i686-w64-mingw32 với * x86_64-w64-mingw32 * và local32 với local64.
Tôi biết gần như không có gì về lập trình windows và không thể giúp bạn, nhưng lưu ý rằng GNU readline là GPLed, vì vậy bạn không thể phân phối gói nhị phân chỉ (bạn có thể phân phối trước khi biên dịch nhưng nhị phân chỉ là vi phạm bản quyền). – AProgrammer
Thú vị, chính xác những yêu cầu đó là gì? (dự án của chúng tôi là nguồn mở để chúng tôi chắc chắn có thể tuân thủ, nhưng tôi không có kỹ năng trong bộ phận giấy phép :). Có phải những thứ như phân phối nhị phân có tham chiếu đến nguồn trực tuyến được cho phép hay nguồn phải được bao gồm mọi lúc? –
Bạn cần luật sư. Tôi tin rằng nhị phân-với-tham chiếu được cho phép, miễn là nguồn gốc là có sẵn. Trở ngại lớn nhất là phần mềm của bạn cũng phải là GPL (không phải bất kỳ giấy phép nguồn mở nào khác có khả năng cao hơn). Có một bản sao Bline-copyrighed readline được gọi là editline trong các giai đoạn khác nhau của sự chết. –