语言

Menu
Sites
Language
Shared library 생성 시 외부에서 함수를 참조하지 못하는 상황입니다.
   
   

Tizen IDE에서 shared library를 생성하였습니다.

( New > Tizen Native Project > shared  library )

생성된 라이브러리를 다른 프로젝트의 lib dir에 넣고 빌드 시 참조하지를 못하고 있는 상황입니다.

 

readelf 로 라이브러리를 보니 아래와 같이 LOCAL 로 선언이 되어 있어서 외부참조가 안되고 있는 상황입니다.

53: 00000000     0 FILE    LOCAL  DEFAULT  ABS temp.c
61: 00000449    16 FUNC    LOCAL  DEFAULT   11 temp_a

 

static project 로 만들 경우에는  GLOBAL로 잡히며 정상적으로 참조가 됩니다. 
 

질문을 요약하면 아래와 같습니다.

1. Shared Lib Project 에서 내부 함수들을 GLOBAL로 만드는 빌드옵션이나 기타 방법이 있나요?

2. Static Lib Project 에서 외부 라이브러리를 참조하게끔 설정이 가능한가요?

   ( Shared Lib Project 에서는 빌드옵션 중 Linker에 참조할 수가 있었습니다.)

 

 

响应

1 回复
daniel kim

안녕하세요..

shared libary 에서  아래와 같이 EXPORT_API로 function을 선언하면 다른 project에서 참조가 가능합니다.

1. shared libary의 header file에 아래와 같이 선언하고 c file안에서 function 정의.

       EXPORT_API int mytemp(int);

2. shared library의 properties--> C/C++ Build --> Tizen settings --> Platform --> architecture를 ARM7-a로 변환하고 빌드 후 .so를 project의 lib 폴더 밑에 복사.

3. project의 header file에 아래와 같이 추가.

       extern  int mytemp(int);

4. project의 properties --> C/C++ Build --> Settings --> C++ Linker --> Libraries 에서, Linraries(-I)에 library명 추가하고 Library search path(-L)에 .so파일선택.

5. build