Dopo frustrazioni simili, ho appena compilato sia Versione a 32 e 64 bit di libreadline 6.2 con MinGW-w64. Ecco il mio come ho fatto:
layout del mio dev directory:
c:\dev\msys
c:\dev\mingw32
c:\dev\local32
c:\dev\mingw64
c:\dev\local64
Impostare alcune variabili d'ambiente per la compilazione a 32 bit:
export CPPFLAGS=-I/c/dev/local32/include
export LDFLAGS=-L/c/dev/local32/lib
termcap 1.3.1.
Eseguire il configurare lo script:
./configure --host=i686-w64_mingw32 --prefix=/c/dev/local32
Modificare termcap.c e correggere alcune righe nella parte superiore. Il mio aspetto:
/* 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
e 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 */
Modificare il 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
Dopo quella chiamata make install e dovrebbe compilare senza avvisi o errori.
readline 6.2
impostare lo stesso CPPFLAGS e LDFLAGS variabili come con termcap prima di chiamare:
./configure --prefix=/c/dev/local32 --host=i686-w64-mingw32 --enable-static --enable-shared
Modificare il Makefile:
Line 40: AR = i686-w64-mingw32-ar
fanno installare ora dovrebbe compilare e installare readline !
Se si desidera una libreria a 64 bit, sostituire i686-W64-mingw32 con * x86_64-W64-mingw32 * e local32 con local64.
Non conosco quasi nulla sulla programmazione di Windows e non posso aiutarti, ma nota che GNU readline è GPL, quindi non puoi distribuire un pacchetto binario solo (puoi distribuire uno precompilato ma solo binario è violazione del copyright). – AProgrammer
Ah interessante, quali sono esattamente questi requisiti? (il nostro progetto è open-source, quindi possiamo certamente aderire, ma non sono molto competente nel dipartimento delle licenze :). Sono cose come la distribuzione di un binario con un riferimento alla fonte online consentita, o la fonte deve essere inclusa in ogni momento? –
Per questo è necessario un avvocato. Credo che sia consentito il binario con riferimento, a condizione che la fonte originale sia disponibile. Il più grande ostacolo è che il tuo software deve essere anche GPL (non una qualsiasi altra licenza open source potenzialmente più indulgente). C'è un clone readline protetto da BSD chiamato editline in varie fasi di deadness. –