jingshi_19
os x10.5.1下使用gcc编译,链接时出现问题
makefile 文件
CC = gcc
SOURCE_DIR = ../../src/
INCLUDE_DIR = ../../include/
PLATFORM_INCLUDE = include/
PLATFORM_SRC_INCLUDE = src/
PLATFORM_LIBRARIES = /System/Library/Frameworks/JavaVM.framework/Libraries/
DEBUG_OUTPUT_DIR = debug/
RELEASE_OUTPUT_DIR = release/
DEBUG11_OUTPUT_DIR = debug_jdk11/
RELEASE11_OUTPUT_DIR = release_jdk11/
TARGETS = debug release debug11 release11
all : $(TARGETS)
VPATH = $(SOURCE_DIR) $(INCLUDE_DIR)
# we do not need '-fpack-struct' as option to get byte aligned structure members as required by PKCS#11,
# all PKCS#11 modules seem to be compiled without this option
.PHONY : debug
debug : pkcs11wrapper.c pkcs11wrapper.h
$(CC) -fPIC -O3 -g -I $(PLATFORM_SRC_INCLUDE) -I $(PLATFORM_INCLUDE) -I $(INCLUDE_DIR) -DUNIX -DDEBUG -g -o $(DEBUG_OUTPUT_DIR)libpkcs11wrapper.so $(SOURCE_DIR)pkcs11wrapper.c $(PLATFORM_LIBRARIES)libjava.jnilib
.PHONY : release
release : pkcs11wrapper.c pkcs11wrapper.h
$(CC) -fPIC -I $(PLATFORM_SRC_INCLUDE) -I $(PLATFORM_INCLUDE) -I $(INCLUDE_DIR) -DUNIX -o $(RELEASE_OUTPUT_DIR)libpkcs11wrapper.so $(SOURCE_DIR)pkcs11wrapper.c -shared -L $(PLATFORM_LIBRARIES)
.PHONY : debug11
debug11 : pkcs11wrapper.c pkcs11wrapper.h
$(CC) -fPIC -I $(PLATFORM_SRC_INCLUDE) -I $(PLATFORM_INCLUDE) -I $(INCLUDE_DIR) -DUNIX -DDEBUG -DNO_CALLBACKS -g -o $(DEBUG11_OUTPUT_DIR)libpkcs11wrapper.so $(SOURCE_DIR)pkcs11wrapper.c -shared -L $(PLATFORM_LIBRARIES)
.PHONY : release11
release11 : pkcs11wrapper.c pkcs11wrapper.h
$(CC) -fPIC -I $(PLATFORM_SRC_INCLUDE) -I $(PLATFORM_INCLUDE) -I $(INCLUDE_DIR) -DUNIX -DNO_CALLBACKS -o $(RELEASE11_OUTPUT_DIR)libpkcs11wrapper.so $(SOURCE_DIR)pkcs11wrapper.c -shared -L $(PLATFORM_LIBRARIES)
clean :
rm -f $(DEBUG_OUTPUT_DIR)* $(RELEASE_OUTPUT_DIR)*
调试结果:
Undefined symbols:
"_JNI_GetCreatedJavaVMs", referenced from:
_callJCreateMutex in ccfTEc2Y.o
_callJDestroyMutex in ccfTEc2Y.o
_callJLockMutex in ccfTEc2Y.o
_callJUnlockMutex in ccfTEc2Y.o
_notifyCallback in ccfTEc2Y.o
"_main", referenced from:
start in crt1.10.5.o
谁能告诉我为什么?