내 문제는 정적 라이브러리를 사용하여 공유 라이브러리를 작성하려고한다는 것입니다.커널 드라이버에 정의 된 NDK c app에서 호출되는 함수를 사용할 수 있습니까?
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libRip
LOCAL_SRC_FILES := src/Rip_api.cpp src/Rip_crypto.cpp
LOCAL_CFLAGS := -DCLR_INTERAPTIV_I7 -DCLR_INTERAPTIV -v
#only include corelockr and rip headers
LOCAL_C_INCLUDES := $(LOCAL_PATH)/inc/ $(LOCAL_PATH)/include/ $(LOCAL_PATH)/../../hardware/libhardware/include/hardware/
LOCAL_LDLIBS := -llog -L$(LOCAL_PATH)/library -lthisis_crypto -lthisis_interaptiv
LOCAL_SHARED_LIBRARIES = libsmem.sastra
#test seqr library
#LOCAL_LDFLAGS := -v -L$(LOCAL_PATH)/library -lthisis_crypto -lthisis_interaptiv
#this option will build static library
include $(BUILD_SHARED_LIBRARY)
는이 일을하면 좀 정의되지 않은 참조 오류가 나노을 수행시이
I7_Embedded_SDK/corelockr/././src/request.c:494: undefined reference to `function'
같은
mmm -B path/to/test/app/android.mk
나는이 request.o 파일에서 볼 수
request.o:
U function
나는 t의 근원이 없다. 그는 주 라이브러리 thisis_crypto 및 thisis_interaptive이지만 래퍼 라이브러리 libRip.so는이 함수를 호출합니다. request.o가 라이브러리에 있습니다. thisis_interaptive.
즉이 함수 정의가 라이브러리에 없음을 의미합니다. 또한 나는 또한이 여기에 정의 된 의미
T function
을 kernel_driver.ko nm의 모든 작업 의 일부 커널 드라이버 ipc.ko을 확인.
1) 커널 드라이버를 사용하고있는 일부 기능을 빌드하려고 할 가능성이 있습니다.
2) 가능한 경우 공유 라이브러리를 어떻게 구축 할 수 있습니까?
감사합니다.
그래서 사용자 공간 라이브러리의 nm에서 정의되지 않은 함수가 표시되는 경우 이는 실제로 정의되지 않았으며 실수 였음을 의미합니다. 또한 정적 라이브러리로 빌드 할 때 정의되지 않은 참조 오류가 발생하지 않습니다. 응용 프로그램이 라이브러리에서 정의되지 않은 함수를 사용하지 않을 수 있으므로 이러한 함수가 실행 파일에서 제거 될 수 있습니까? –
죄송합니다. 나는 정말로 당신의 질문을 이해하지 못합니다. – Ming