2015-02-06 2 views
0

Я пытаюсь получить код dropbear ssh C для создания библиотеки вместо двоичного. Dropbear построен от генератора configure от configure.ac с использованием autoconf. Затем configure используется для создания Makefile, который создает исполняемые файлы. Я хотел бы создать цель для сгенерированного Makefile, который создает статически связанную библиотеку, чтобы мое приложение могло связать ее и получить доступ к функциональности dropbear.Как настроить configure.ac для добавления целевой библиотеки в финальный Makefile?

Адрес электронной почты: configure.ac Адрес электронной почты:

ответ

1

Нет. Существует простой способ изменения Makefile.in для этого. Makefile.in - шаблон для Makefile; сценарий configure делает немного больше, чем заменяет выражения, заключенные в @, в Makefile.in со значениями, которые он выводил во время его запуска, поэтому вы можете добавлять правила в Makefile.in почти так же, как и в обычный Makefile.

В данном конкретном случае, можно добавить следующее:

dropbearlibobjs = $(filter-out svr-main.o,$(dropbearobjs)) 

libdropbear.a: $(dropbearlibobjs) $(HEADERS) $(LIBTOM_DEPS) Makefile 
     ar rcs [email protected] $(dropbearlibobjs) 

Большая часть этого берется из dropbear: цели, за исключением того, что рецепт создает статическую библиотеку и блок перевода, который содержит функцию main фильтруется вне. Затем вы можете использовать

./configure 
make libdropbear.a 

для создания библиотеки.

Я не уверен, насколько легко эта библиотека может быть интегрирована с новой программой. Авторы dropbear почти наверняка не рассматривали этот случай использования, когда они его написали, поэтому части кода могут зависеть от глобального состояния (например, обработчиков сигналов), которое ваше приложение не может предоставить, и, как правило, нет документального API, от которого вы можете зависеть , Я не знаю, что именно вы планируете делать, но этот путь вряд ли будет простым и понятным.

Возможно, вы бы хотели взглянуть на libssh или libssh2? (Интересно, что первый, кажется, более поздний, чем последний)

Смежные вопросы