0
가 나는 autotools를 + libtool이 프로젝트에서 모듈을 만드는 오전 : 이제libtool : 내 모듈의 경로는 무엇입니까?
#the module:
lib_LTLIBRARIES = mmmm.la
mmmm_la_SOURCES = mmmm.c
mmmm_la_LDFLAGS = $(AM_LDFLAGS) -module -shared
을 다음과 같이 Makefile.am 보이는, 내 모듈에 대한 C 테스트를 작성하고자합니다.
내 C 테스트에dlopen()
또는
lt_dlopen()
에 제공해야합니다 어떤 경로? 내 모듈의 상대적 위치를
(시험에 비해 (.so
또는 .la
.XX입니다) 시험은 공유 객체 mmmm.xx로드를 개시한다 이 프로그램은)
Makefile.am
에 전달 된
-dlopen
옵션이를 찾을 수 autotools를 도움이 될 것으로 기대
lt_dlopen()
로 시도 ... 내가 체크, 트리 메이크업 검사, 또는 메이크 installcheck의 부족을 할 수 있는지 여부에 따라 다릅니다 lib :
lt_dlopen()
이 호출되면 도움이되지 않습니다.
lt_dlopen()
은 실제로
.la
파일을 열 수 있지만 여전히 wher에게 알려야합니다.
#the module test (tests are also installed, hence the "test" prefix)
test_PROGRAMS = tttt
tttt_SOURCES = tttt.c
tttt_LDADD = "-dlopen" mmmm.la
tttt_DEPENDENCIES = mmmm.la
모든 좋은 힌트 : 전자이 파일은 ltdl
lib 디렉토리에 테스트 할 때
내 테스트 메이크은 다음과 같습니다 (아마도 .libs 디렉토리를 ommiting)의 매력에 빠져?
흠. 두 솔루션 모두 해킹 소리처럼 들립니다. libtool과 autotools를 사용하여 가능한 한 OS를 추상화하는 것이 아이디어입니다. * .so 파일 이름이나 LD_LIBRARY_PATH를 하드 코딩하면 결국 우리는 지원하고자하는 OS의 작은 부분을 가정하게됩니다. (분명히 리눅스를 코딩합니다!). 그러나 이것이 유일한 (나쁜) 해결책 일 수 있습니다. 나는 그것이 작동한다고 추측하므로 대답을 받아 들일 것입니다. 그리고 당신은 시도를위한 약간의 신용이 필요합니다 :-) ... 완전히 만족하지는 않습니다 ... – user1159290