2015-02-06 10 views
0

dropbear ssh C 코드가 바이너리 대신 라이브러리를 빌드하려고합니다. Dropbear는 을 사용하여 configure.ac에서 configure을 생성하여 만들어집니다. 그런 다음 configure을 사용하여 실행 파일을 빌드하는 Makefile을 생성합니다. 생성 된 Makefile에 대한 타겟을 생성하고 싶습니다.이 타겟은 내 애플리케이션이 링크 할 수 있도록 정적으로 링크 된 라이브러리를 생성하여 드롭 베어 기능에 액세스 할 수 있습니다.configure.ac을 수정하여 최종 Makefile에 라이브러리 타겟을 추가하는 방법은 무엇입니까?

이 목표를 달성하기 위해 configure.ac을 수정하는 간단한 방법이 있습니까?

답변

1

아니요. 그러나이를 위해 Makefile.in을 수정하는 간단한 방법이 있습니다. Makefile.inMakefile의 템플릿입니다. 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) 

제조법 필터링 된 main 기능을 포함하는 정적 라이브러리 및 변환 장치를 구축 제외하고 이것의 대부분은 dropbear: 대상에서 가져옵니다 아웃. 그런 다음

./configure 
make libdropbear.a 

을 사용하여 라이브러리를 빌드 할 수 있습니다.

그러나이 라이브러리를 새 프로그램과 얼마나 쉽게 통합 할 수 있는지는 확실하지 않습니다. dropbear의 작성자는 작성한이 유스 케이스를 거의 고려하지 않았기 때문에 코드의 일부는 애플리케이션이 제공 할 수없는 전역 상태 (예 : 신호 처리기)에 의존 할 수 있으며 일반적으로 의존 할 수있는 문서화 된 API는 없습니다. . 나는 정확히 무엇을 할 계획인지 모르지만,이 길은 쉽지 않고 쉽습니다.

아마 또는 libssh2을 살펴볼 것입니까? (흥미롭게도 전자는 후자보다 최근 인 것 같다)