라이브러리를 포함하여 컴파일을 하고 싶습니다.

김희진의 이미지

메우 간단하고 기초적인 부분인데, 맨페이지와 문서를 봐도 쉽게 보이지가
않네요. 어제부터 계속 찾고 있습니다.

아주 간단하고 기초적인 부분이라고 생각됩니다.

흔히... 어떠한 라이브러리를 이용해 컴파일, 링크를 할때

gcc -o ~~~~~~~ -L/usr/lib/~~~ -l~~~

이러한 방식으로 컴파일을 하는데...
문제는 이렇게 하면 해당 컴파이 결과물을 실행하기 위하여

실행하는 해당 시스템에도 그 라이브러리가 있어야 한다는 것입니다.

실행하는 해당 시스템에서도 라이브러리가 없어도 문제없이 실행을 하려면
컴파일 할때 아예 그 라이브러리를 포함해서 컴파일을 해야 할 것입니다.
물론 실행 파일의 크기는 좀 커지겠죠.

어떻게 하면 이러한 방식으로 컴파일을 할 수 있을까요?

현실적인 제 상황은... mysql 관련된 간단한 프로그램을 코딩 했는데..
그 바이너리 실행파일을 mysql 라이브러리가 없는 곳에서
실행을 해야 합니다. 실행하여 다른 서버의 mysql 서버에 접속해서
확인을 하거든요.. 어떻게 해야 할까요?

pynoos의 이미지

-static option을 사용하면 됩니다.

하지만, mysql client 가 없는 곳에서 실해한다면...

ldd <program>

으로 확인하여, 필요한 shared object (library)를 같이 복사하시는 것도 좋은 방법 같습니다.

errai의 이미지

필요한 shared object를 같이 설치 하실때 주의할 점은
Mysql library만 넣는 우를 범하지 마시길 바랍니다.
설치할 시스템이 정말 천차 만별이더군요. 컴파일러도
다양각색으로 깔려있구요. 또 귀찮기도 하구요.

가능하면 static으로 컴파일 해서 배포하는것이 나을것 같습니다. :)
근데 프로그램에 따라서 static으로 해서는 안되는 상황도
있더군요 :?

june8th의 이미지

errai wrote:
근데 프로그램에 따라서 static으로 해서는 안되는 상황도
있더군요 :?

어떤 상황일까요?
알려주시면 도움이 될거 같습니다..

errai의 이미지

예전에 경험했던 예를 들어보자면 static 으로 컴파일한 A라는 프로그램이
있다고 가정 합시다. 근데 이 A라는 녀석은 프로그램 실행 히
dlopen등을 이용하여 외부 모듈 B를 동적으로 불러와 사용한다고 합시다.
여기서 B가 실행될때 A의 영역중 일부를 참조할 경우 dlopen 할 경우에
undefined symbol 에러가 날 것입니다.

마땅한 해결책이 안보여서 그냥 Dynamic으로 컴파일 했던 기억이 납니다.
아예 저런 구조가 나타나지 않는 프로그래밍이 나을것 같습니다.. :(

댓글 달기

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