Простая альтернатива libtool? - PullRequest
10 голосов
/ 04 марта 2010

Будучи полностью удовлетворенным старыми файлами Makefile, я ищу простую альтернативу libtool. Я не хочу переключаться на automake, и у меня постоянно возникают проблемы с libtool, когда я пытаюсь использовать его напрямую. Последний из них - «неподдерживаемые свойства жесткого кода», и я сыт по горло отсутствием полной документации, которая просто говорит мне, что не так в этот раз ...

Я хочу только скомпилировать кучу файлов .o с правильными флагами и затем связать их в общую библиотеку, чтобы она работала на максимально возможном количестве платформ. Есть ли что-нибудь, что делает это и не заставляет меня переключать все мои другие инструменты одновременно?

Ответы [ 4 ]

6 голосов
/ 04 марта 2010

Я не уверен, что он подойдет для вашего рабочего процесса, но я бы порекомендовал посмотреть CMake . Он работает на Windows, Linux и Mac и не должен заставлять вас менять какие-либо другие инструменты. Вы должны сами оценить его пригодность.

3 голосов
/ 09 января 2014

Есть jlibtool (который не имеет ничего общего с Java).

Он написан на C и может быть просто связан с вашим источником.

Изначально это был проект Apache , но тот, кто работал там, похоже, забросил его примерно в 2004 году.

Он перешел к руководителю проекта FreeRADIUS Алану Декоку, который модернизировал код и исправил несколько проблем. Мы используем его для проекта FreeRADIUS (> = 3.0.0) для создания ссылок на все время сборки.

3 голосов
/ 05 марта 2010

Учитывая ваше описание в комментарии к ответу Миллиамса,

Мне просто нужен один инструмент, который я говорю: «дайте мне флаги компилятора, чтобы я мог скомпилировать эти n файлов для использования в общей библиотеке, а затем дайте мне команды для их соединения»,

тогда libtool вполне может быть самым простым инструментом для работы. Я не знаю другой альтернативы.

Вы правы, что документации по использованию libtool с простыми make-файлами практически не существует, но libtool, конечно, не требует, чтобы вы переключились на automake. Кроссплатформенные библиотеки сложны, и за них нужно заплатить libtool. (Или, возможно, цена со скидкой: libtool + automake + autoconf или CMake или Jam.)

1 голос
/ 24 июня 2018

slibtool (dl.midipix.org/slibtool, git: //midipix.org/slibtool) - это вставная замена libtool, написанная на C. Один двоичный файл slibtool предназначен для бесшовной поддержки как нативных, так и перекрестных сборок, и утилита также предоставляет некоторые дополнительные функции (установка файлов .la является необязательной, дополнительная цветная аннотация и т. д.). Следующий минимальный простой make-файл демонстрирует, как (перекрестно) построить библиотеку с помощью 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.

Собственная сборка, по умолчанию (совместно используемая библиотека и статическая библиотека)

$ make
$ make install

Собственная сборка, только общая библиотека

$ make LIBTOOL=slibtool-shared
$ make install

Собственная сборка, только статическая библиотека

$ make LIBTOOL=slibtool-static
$ make install

кросс-билд, по умолчанию

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

кросс-билд, по умолчанию, с большим количеством цветов

$ make LIBTOOL=dlibtool CC=some-target-tuple-gcc
$ make install
...