[SOLVED] Shared Library 와 Header File 관련해서 질문이 있습니다.

owcred601의 이미지

안녕하세요.

궁금한 점이 있습니다.
기초적인 질문인 것 같아 죄송합니다.

빌드의 결과로 .so 파일과 .a 파일을 동시에 만들었습니다.

이제 이 두 파일 중 하나를 타겟보드에 넣는다고 했을 때,
.so 나 .a 파일의 경우 특별한 경로에 header 파일을 따로 복사해주지 않아도 되었던 것으로 기억합니다.

ld 과정에서 so 나 a 라이브러리를 실행 프로그램과 링크하면,
타겟 보드의 실행파일, so 혹은 a 라이브러리들이 적절한 위치(/usr/bin, /usr/lib 등)에 있으면
실행되는 것으로 알고 있었거든요.

그런데 제가 기존에 보지 않았던 몇몇 Makefile 을 보니, 자신의 header 파일들도 특정 경로에 카피해주는 것 같습니다. 이러는 이유가 있나요??

궁금하네요. 읽어주셔서 감사합니다.

Anti-Lock의 이미지

보통 devel 패키지는 .a 파일과 .h 파일을 설치합니다. 이것은 개발자를 위한 것일겁니다.
그러나 보통의 일반사용자는 devel 패키지를 설치하지는 않죠.
미리 컴파일된 바이너리의 실행을 위해서는 .so 파일이 필요합니다.

owcred601의 이미지

정말 감사합니다. 말인 즉슨, 타겟보드에는 실행 바이너리를 위한 .h는 필요가 없다는 말씀이시군요.
.so 가 필요하고. 이전에 build 후, install 할 때, 항상 .so 혹은 .a만 했었는데, .h도 해야하나? 하는 생각이 들어서 질문했습니다.
답변 정말 감사합니다. 새해 복 많이 받으세요.

oblab의 이미지

so, a 라이브러리파일을 만들었을때 해당 라이브러리를 사용하려면 헤더파일이 필요합니다
h 파일이 필요요할때는 라이브러리를 이용하여 개발을 할때 필요하고, 타겟보드에서 단순히 실행만 시킨다고하면 h 파일은 필요없고 라이브러리 경로만 잘 맞춰주면 됩니다.

적절한 위치에서 실행이 되는 이유는 기본적으로 PATH, LD_LIBRARY_PATH가 /usr/bin, /usr/lib 으로설정되어있기때문에 실행이 됩니다.

owcred601의 이미지

정말 감사합니다. 두 분 말씀대로 진행했는데, 실행이 목적인 타겟보드의 경우는 확실히 so 혹은 a 파일만 있으면 문제가 없네요. Makefile 에서 LD 과정이 정확히 어떤 의미인지 한 번 알아보겠습니다.
귀중한 시간 내주셔서 정말 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.