Java Jni C Makefile

|

컴파일러 환경은 Sun Unix Spark cc 기준


환경이 다를 경우 

CC 의 컴파일러 변경

INC의 java include 위치 변경

CFLAGS 의 옵션변경

Lib 생성시 -G 옵션을 해당 컴파일러 옵션에 맞겨 변경


Makefile

.SUFFIXES: .c .o

.java .class

CC                 = cc

JC                 = javac

INC                = -I/usr/java/include -I/usr/java/include/solaris


SRCS = Source.c

OBJS = $(SRCS:.c=.o) 


JAVASRC = Package/Source.java

CLASS = $(JAVASRC:.java=.class) 

CFLAGS = -g -c

JFLAGS = -g


.c.o:

$(CC) $(INC) $(CFLAGS) $<

.java.class:

$(JC) $(JFLAGS) $<


all : 

JniLib : $(OBJS)

$(CC) -G $(OBJS) -o libShmData.so


JavaCls : $(CLASS)


clean : 

rm -rf $(OBJS)


Lib Compile시 오류가 날 경우 LD_LIBRARY_PATHCLASSPATH 를 export로 확인 후 재 컴파일


jni로 C Header File을 작성 할 경우 Command


javah -jni Packge.Class 


여기서 주의 해야 할 점은 Java 컴파일러로 Class File을 생성시에는 Package/JavaSourceFile.java 형태를 띄지만 javah로 Header File 작성시에는 Package.JavaClass 형태라는 것이다.


And