Pregunta

Al estar perfectamente satisfecho con el viejo estilo Makefile, Busco a una alternativa simple a libtool. No quiero cambiar a automake, y sigo corriendo a tener problemas con libtool cuando trato de usarlo directamente. El último de ellos es 'propiedades hardcode no compatibles', y estoy hartando con la falta de documentación completa que simplemente me dice lo que está mal esta vez ...

Yo sólo quiere compilar un montón de archivos .o con las banderas correctas y luego vincularlos en una biblioteca compartida, de manera que funciona en tantas plataformas como sea posible. ¿Hay algo por ahí que hace justamente eso y no me obligue a cambiar todas mis otras herramientas al mismo tiempo?

¿Fue útil?

Solución

Hay jlibtool (que no tiene nada que ver con Java).

Está escrito en C, y sólo puede ser incluido con su fuente.

Fue originalmente un Apache proyecto , pero el que se estaba trabajando parece abandonada de alrededor de 2004.

Fue tomado por FreeRADIUS proyecto mantenedor Alan DeKok, que modernizó el código y fija algunos problemas insignificantes. La usamos para el proyecto FreeRADIUS (> = 3.0.0) para hacer todo el tiempo de construcción de enlace.

Otros consejos

No estoy seguro si encajaría información del flujo de trabajo, pero me gustaría recomendar mirando CMake . Funciona en Windows, Linux y Mac y no se debe forzar a cambiar cualquiera de las otras herramientas. Vas a tener que juzgar su idoneidad a sí mismo sin embargo.

En vista de su descripción en el comentario a la respuesta Milliams',

  

Sólo quiero una herramienta que le digo: "dame las opciones del compilador para que pueda compilar estos archivos n para su uso en una biblioteca compartida, y luego me dan las órdenes para unirlos",

A continuación, libtool bien puede ser la herramienta más simple para el trabajo. No conozco ninguna otra alternativa.

Tienes razón en que la documentación para el uso con los archivos make libtool de civil es prácticamente inexistente, pero sin duda libtool no requiere que usted para cambiar a automake. bibliotecas de plataforma cruzada son difíciles, y el precio que tiene que pagar por ellos es libtool. (O tal vez el precio de descuento es libtool + + automake autoconf o CMake o mermelada.)

slibtool (dl.midipix.org/slibtool, git: //midipix.org/slibtool) es un libtool gota en el reemplazo, escrita en C. A objetivos sola slibtool binarios a la perfección apoyar tanto nativa y transversal construye, y la utilidad también proporciona algunas características adicionales (instalación de los archivos .la es opcional, anotación código de colores opcionales, etc.). El siguiente archivo MAKE llanura mínima muestra cómo (cruzada) construir una biblioteca utilizando slibtool.

CC      = cc
LIBTOOL = slibtool
DESTDIR = destdir

all:    libfoo.la

a.lo:
    $(LIBTOOL) --mode=compile --tag=CC $(CC) -c a.c

libfoo.la: a.lo
    $(LIBTOOL) --mode=link --tag=CC $(CC) -o libfoo.la -rpath /lib

install: all
    mkdir -p destdir
    $(LIBTOOL) --mode=install cp libfoo.la $(DESTDIR)

# the -rpath argument is required for semantic compatibility with libtool.

acumulación nativa, por defecto (ambos biblioteca compartida y la biblioteca estática)

$ make
$ make install

acumulación nativa, biblioteca compartida única

$ make LIBTOOL=slibtool-shared
$ make install

acumulación nativa, biblioteca estática única

$ make LIBTOOL=slibtool-static
$ make install

de compilación cruzada, por defecto

$ make CC=some-target-tuple-gcc
$ make install

de compilación cruzada, por defecto, con una gran cantidad de colores

$ make LIBTOOL=dlibtool CC=some-target-tuple-gcc
$ make install
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top