'Open Source'에 해당되는 글 38건

  1. 2012.10.30 Java Jni C Makefile
  2. 2011.05.19 Looper, Thread, Handler 의 관계!!
  3. 2011.05.04 사용되는 함수 인수변경에 따른 매크로 사용으로 파급 효과 최소화 하기

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

Looper, Thread, Handler 의 관계!!

|

그래 이거얏!!
And

사용되는 함수 인수변경에 따른 매크로 사용으로 파급 효과 최소화 하기

|
기존 함수 LogMsg(char *Task, char *Msg) 형의 모듈을

LogMsg(char *Task, chark *Msg, char *Path)형으로 변경시

LogMsg함수를 사용하는 모듈 전체를 찾아서 해당 인수를 2개에서 3개로 변환 해야 하는 작업을 해 줘야 된다

이럴 경우 LogMsg를 사용하는 모듈들이 많을 경우 일일이 찾아서 해당 내용을 전부 변경해 줘야 하는 번거로움이 있다

이럴 경우 메크로를 이용하여 해당 내용을 최소하 하면 간단하게 해결 될 수 있다

기존 사용하던 LogMsg 함수명을 다른 함수 명으로 변경을 해준다

LogMsg -> Com_LogMsg
그리고 기존 인수를 3개로 추가 한다 그러면 최종

Com_LogMsg(char *Task, chark *Msg, char *Path)

형을 갖는 새로운 함수를 정의한다 물론 내용도 조금 변경이 될 것이다.

그리고 메크로 함수를 기존이름과 같은 형태로 지정 한다

#defile LogMsg(A, B) Com_LogMsg(A, B, "지정Path")

이런식으로 만들어 지면 모듈수정시 변경해야 되는 파급효과를 최소한으로 줄일 수가 있다!!

And
prev | 1 | 2 | 3 | 4 | 5 | 6 | ··· | 13 | next