libiconv license(LGPL) 관련 질문

혁의 이미지

안녕하세요
제가 libiconv를 프로젝트에 사용하려고 하는데
Windows나 Android 등 다른 플랫폼에서도 빌드가 되도록 하기 위해
libiconv의 소스를 일부 수정할 일이 생겼습니다.
(예 : http://www.codeproject.com/Articles/302012/How-to-Build-libiconv-with-Microsoft-Visual-Studio)

그런데 libiconv가 LGPL이라서 수정을 하면 소스를 공개해야 하는것으로 알고있는데요
libiconv를 수정해서 libiconv2를 작성하고,
libiconv2를 프로젝트에 링크해서 사용하는 경우
libiconv2의 소스만 공개하고 프로젝트는 공개를 안해도 되는건가요?
아니면 libiconv2뿐 아니라 그것을 링크한 모든 프로젝트들을 전부 공개해야하는것인가요?

알쏭달쏭하네요 ㅠㅠ

익명 사용자의 이미지

libiconv2의 소스만 공개하고, 그걸 라이브러리로 사용하는 프로젝트는 공개하지 않아도 됩니다.

김정균의 이미지

중요한건, libiconv2와 님의 프로그램을 같이(묶어서) 배포를 하면 LGPL2로 모두 공개를 해야 합니다. 그리고 아랫분 답변 처럼 static link는 안됩니다.

혁의 이미지

그럼 libconv2를 빌드해서 .dll이나 .so파일을 만들고
그것을 제 프로그램과 같이 배포하는 경우에도 공개를 해야하는건가요?

김정균의 이미지

.dll이나 .so가 패키지에 포함이 되어버리면 배포본 전체가 gpl이 되어야 합니다. 그러므로 .dll이나 .so를 별도의 패키지로 만드셔야 합니다. 그리고 별도의 패키지로 만든 libiconv2의 소스를 공개 하시면 됩니다. openvpn windows용이나 potplayer의 installer를 보시면 다른 패키지 처리를 어떻게 하는지 참고가 되실 겁니다.

Necromancer의 이미지

설마 link도 static link는 아니겠죠. LGPL는 dynamic link만 허용합니다.

Written By the Black Knight of Destruction

혁의 이미지

답변감사합니다.
다이나믹은 되고 스태틱은 안되는건 또 처음알았네요

barmi의 이미지

LGPL이 static link를 지원하지 않는 것은 아니지만, 배포조건이 좀 까다롭습니다.
그 근본 취지가 LGPL로 배포된 lib를 수정해서 원래의 bin을 구동할 수 있어야 해서 그렇습니다.
dynalic link는 so나 dll만 교체하면 그대로 구동이 되지만,
static link는 실행bin을 새로 만들어야 하지요. 그래서 그 실행 bin을 만들 수 있도록 배포를 해야 합니다.
실행bin만 만들 수 있으면, 소스가 아닌, .o, .a 그 어떤 것도 가능합니다.
당연히 전체 프로젝트 파일 or makefile도 같이 배포를 해야 하지요.
필요하다면 build script까지...

그래서, 어렵습니다.
그래서, 대부분의 경우, LGPL일 경우 dynamic link로 배포하는 것이 훨씬 좋습니다.
하지만, dynamic link환경을 지원하지 않고, LGPL을 써야 하는 경우 - iOS 같은 경우 - 가 문제가 됩니다.

어쨋든 그렇습니다.

bushi의 이미지

공개 의무는 수정 여부가 아니라 GPL/LGPL 인 바이너리의 배포 여부와만 상관있습니다.

댓글 달기

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