언어 설정

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에 참조할 수가 있었습니다.)

 

 

Responses

2 댓글
daniel kim

아래와 같은 내용인것 같습니다.

https://developer.tizen.org/forums/sdk-ide/shared-library-%EC%83%9D%EC%84%B1-%EC%8B%9C-%EC%99%B8%EB%B6%80%EC%97%90%EC%84%9C-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%B0%B8%EC%A1%B0%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%98%EB%8A%94-%EC%83%81%ED%99%A9%EC%9E%85%EB%8B%88%EB%8B%A4.#comment-18455

colin Rao

fyi, regarding shared libraries, I think it's works for Tizen. It is not problem to build library from Shared Lib template and get *.so file in folder Debug (for arm or x86 configuration). After this you could add library (*.so file) into youprojectDir/lib folder and build project with appropriate configuration (x86 or arm) . To call library method you could use Eina_Module api, code snippet:

    Eina_Module* module= eina_module_new  ("/opt/usr/apps/org.tizen.yourApp/lib/libsharedlib.so") ;
    eina_module_load(module);
    bool (*myfunc)(void);
    myfunc=  eina_module_symbol_get  ( module, "tizensharedlib" );
    (*myfunc)();
    eina_module_unload(module);