[SOLVED] Shared Library 와 Header File 관련해서 질문이 있습니다.
글쓴이: owcred601 / 작성시간: 목, 2017/01/12 - 6:37오후
안녕하세요.
궁금한 점이 있습니다.
기초적인 질문인 것 같아 죄송합니다.
빌드의 결과로 .so 파일과 .a 파일을 동시에 만들었습니다.
이제 이 두 파일 중 하나를 타겟보드에 넣는다고 했을 때,
.so 나 .a 파일의 경우 특별한 경로에 header 파일을 따로 복사해주지 않아도 되었던 것으로 기억합니다.
ld 과정에서 so 나 a 라이브러리를 실행 프로그램과 링크하면,
타겟 보드의 실행파일, so 혹은 a 라이브러리들이 적절한 위치(/usr/bin, /usr/lib 등)에 있으면
실행되는 것으로 알고 있었거든요.
그런데 제가 기존에 보지 않았던 몇몇 Makefile 을 보니, 자신의 header 파일들도 특정 경로에 카피해주는 것 같습니다. 이러는 이유가 있나요??
궁금하네요. 읽어주셔서 감사합니다.
Forums:
보통 devel 패키지는 .a 파일과 .h 파일을
보통 devel 패키지는 .a 파일과 .h 파일을 설치합니다. 이것은 개발자를 위한 것일겁니다.
그러나 보통의 일반사용자는 devel 패키지를 설치하지는 않죠.
미리 컴파일된 바이너리의 실행을 위해서는 .so 파일이 필요합니다.
답변 감사합니다.
정말 감사합니다. 말인 즉슨, 타겟보드에는 실행 바이너리를 위한 .h는 필요가 없다는 말씀이시군요.
.so 가 필요하고. 이전에 build 후, install 할 때, 항상 .so 혹은 .a만 했었는데, .h도 해야하나? 하는 생각이 들어서 질문했습니다.
답변 정말 감사합니다. 새해 복 많이 받으세요.
so, a 라이브러리파일을 만들었을때 해당
so, a 라이브러리파일을 만들었을때 해당 라이브러리를 사용하려면 헤더파일이 필요합니다
h 파일이 필요요할때는 라이브러리를 이용하여 개발을 할때 필요하고, 타겟보드에서 단순히 실행만 시킨다고하면 h 파일은 필요없고 라이브러리 경로만 잘 맞춰주면 됩니다.
적절한 위치에서 실행이 되는 이유는 기본적으로 PATH, LD_LIBRARY_PATH가 /usr/bin, /usr/lib 으로설정되어있기때문에 실행이 됩니다.
답변 감사합니다.
정말 감사합니다. 두 분 말씀대로 진행했는데, 실행이 목적인 타겟보드의 경우는 확실히 so 혹은 a 파일만 있으면 문제가 없네요. Makefile 에서 LD 과정이 정확히 어떤 의미인지 한 번 알아보겠습니다.
귀중한 시간 내주셔서 정말 감사합니다.
댓글 달기