Object file의 종류에 대한 질문

hekimian의 이미지

궁금한 것이 있을때마다 좋은 정보를 찾아가게 해주신 여러분들께 정말 감사드립니다.

"링커와 로더"에 관한 문서를 읽다보니 오브젝트 화일은 세가지로 분류 된다고 나와있습니다.
- 재배치 가능한 오브젝트 화일(Relocatable object file)
- 실행가능한 오브젝트 화일(Executable object file)
- 공유 오브젝트 화일(Shared object file)

각각이 무엇을 의미하는지 흐릿하게 보이기는 하나 정확한 개념이 서질 않네요.
예를 들어 좀 자세하게 설명 해주십사하는 부탁을 합니다. ^..^

방준영의 이미지

hekimian wrote:
궁금한 것이 있을때마다 좋은 정보를 찾아가게 해주신 여러분들께 정말 감사드립니다.

"링커와 로더"에 관한 문서를 읽다보니 오브젝트 화일은 세가지로 분류 된다고 나와있습니다.
- 재배치 가능한 오브젝트 화일(Relocatable object file)
- 실행가능한 오브젝트 화일(Executable object file)
- 공유 오브젝트 화일(Shared object file)

각각이 무엇을 의미하는지 흐릿하게 보이기는 하나 정확한 개념이 서질 않네요.
예를 들어 좀 자세하게 설명 해주십사하는 부탁을 합니다. ^..^


재배치 가능한 오브젝트 파일은 실행가능한 오브젝트 파일이나 공유 오브젝트 파일을 만드는 데 사용하는 파일입니다. 간단히 .o 또는 .obj 파일이라고 생각하시면 됩니다. 실행가능한 오브젝트 파일은 우리가 보통 실행파일이라고 부르는 것이고, 공유 오브젝트 파일은 .so나 .dll 파일 등을 말합니다.

참고로 재배치 가능하다는 말은 해당 파일을 메모리 상의 임의의 위치에 배치할 수 있다는 뜻입니다. 예를 들어 모든 메모리 참조를 베이스와 오프셋으로 나누고, 파일이 배치되는 메모리 시작주소에 따라 베이스값을 이리저리 옮기면 원하는 메모리에 접근할 수 있게 되는 것이죠. 그런 면에서 볼 때 공유 오브젝트 파일도 재배치 가능으로 분류할 수 있지만, 위의 세가지 분류에서는 역사적 이유인지 따로 구분을 하더군요.

시간이 되면 System V Application Binary Interface 같은 문서를 읽어보시는 것도 유닉스 계열의 바이너리 포맷과 동적 링커동작 원리를 이해하는 데 도움이 많이 될 것입니다(아마 읽고 계신 문서에 링크가 있을 겁니다).

yamainu의 이미지

윗분께서 잘 설명해 주셨내요. :o
참고로 ..
공유 오브젝트 화일(Shared object file) 도 재배치 가능한 오브젝트 화일(Relocatable object file) 의 범주에 속한다는 것이고
그둘의 차이는 컴파일타임에 만들어지냐 로드타임(또는 런타임)에 불려지냐...

*Relocatable object file->compile time to create an executable object file.
*Shared object file -> special type of relocatable object file that can be loaded into memory and linked dynamically, either at load time or at run time.

영어는 골치아프군요...
오늘은 :roll: Job=null; 이내요.

Programmers never die: They just GOSUB without RETURN.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.