C ++ / Java를 사용하여 상용 소프트웨어 개발


9

나중에 판매 할 프로그램을 개발할 계획입니다. 코드를 작성할 언어를 결정하려고 노력 중이며 C ++ 또는 Java로 축소되었습니다.

GNU의 GCC 및 OpenJDK에 사용 된 GPL v2 및 v3 라이센스를 사용했습니다 (예, 어느 정도의 법적 내용을 이해할 수는 있지만 전부는 아닙니다). 그러나 모든 사람들 이 모호한 한 가지 점이 있습니다 (이것은 가장 먼저 대답 한 것 중 하나였습니다. IMO). C ++ / Java를 사용하여 프로그램을 개발하고 GCC 컴파일러 또는 OpenJDK의 컴파일러를 사용하여 프로그램을 컴파일하면 GPL에 프로그램을 배치하려면?

내가 할 수있는 한 내 프로그램에 라이센스를 할당 할 수있는 모든 권리가 있지만 캐치가 있습니다. 라이센스에는 GPL이있는 라이브러리에 링크해서는 안된다는 라이센스가 있습니다. 그렇다면 GPL에서 프로그램을 해제해야합니다.

이제 C ++ / Java에서 라이브러리로 간주되는 것을 알 수 없으므로 C ++ (iostream, list, map 등)의 일반 항목 또는 표준 JDK의 일부로 사용할 수있는 일반 Java 클래스 / 인터페이스를 사용하는 경우 6 분포 (문자열,리스트, 맵 등), 이것이 '도서관에 링크'를 구성합니까?


1. 우리는이 주변에 법적인 조언을하지 않습니다. 2. 'C ++ / Java'란 무엇입니까? 3. JNI 구성 요소를 사용하여 Java로 작성된 수천 개의 상용 소프트웨어 제품을 둘러보고보십시오.
bmargulies

1
C ++ / Java에서 /는 완벽하게 유효한 영어 인 "or"의 약어로 사용됩니다.
Robin Green

이것은 opensource.stackexchange.com에 대한 질문처럼 들립니다 . (아직 답을 얻지 못한 경우)
Kevin Krumwiede

답변:


13

C ++ / Java를 사용하여 프로그램을 개발하고 GCC 컴파일러 또는 OpenJDK의 컴파일러를 사용하여 컴파일하는 경우 GPL에 프로그램을 배치하지 않고도 판매 할 수 있습니까?

예. GPL은 특히 프로그램 실행 결과를 제외합니다.

본 프로그램의 출력은 그 내용이 본 프로그램을 기반으로 한 저작물을 구성하는 경우에만 적용됩니다 (프로그램을 실행함으로써 이루어진 내용과 무관).

즉, 프로그램에 GCC 비트 또는 다른 GPL을 포함하면 GPL이어야합니다. 그렇지 않으면 아니오-GPL 컴파일러가 객체 코드를 생성했다는 사실은 GPL되어야하는지 여부와 관련이 없습니다. .

링크 할 모든 표준 언어 라이브러리는 GPL이 아니거나 GPL이되지만 수정하지 않은 경우 독점 소프트웨어가 해당 라이브러리에 링크 할 수 있도록하는 예외가 있습니다 . C ++의 경우 libgcc, glibc 및 libstdc ++를 의미합니다. Java의 경우 JRE에 포함 된 모든 라이브러리를 의미합니다.

기술적으로 GPL 소프트웨어를 합법적으로 판매 할 수는 있지만 거의 아무도 돈을 벌지 못합니다.


LGPL (Lesser GPL)을 사용하면 해당 응용 프로그램이 GPL 자체가 아니어도 응용 프로그램이 해당 응용 프로그램에 연결할 수 있습니다. 반면에 GPL 라이브러리는 전염성이 있습니다. 그러나 컴파일러의 출력은 GPL 용어에서 명시 적으로 제외됩니다.
Berin Loritsch

표준 언어 라이브러리를 수정하면 어떻게됩니까? 내가 할 수 있습니까? 프로그램 라이센스는 어떻게됩니까?
piotrek

그런 다음 예외가 적용되지 않으며 관련 라이센스의 전체 조항을 따라야합니다. 또한 Java의 경우 상표에 영향을 미칩니다. 사용중인 문서 나 광고에 Java 또는 OpenJDK를 언급하지 않는 것이 좋습니다 (그러나 Oracle v Google 법원 사건 참조).
Robin Green

8

GCC와 OpenJDK 모두 명시적인 예외가 있습니다.

… GCC를 사용하여 프로그램을 컴파일 할 때 GCC는 특정 GCC 헤더 파일 및 런타임 라이브러리의 일부를 컴파일 된 프로그램과 결합 할 수 있습니다. 이 예외의 목적은 비 GPL (독점 포함) 프로그램의 컴파일이이 예외에서 다루는 헤더 파일 및 런타임 라이브러리를 이런 식으로 사용할 수 있도록하는 것입니다. …

… GNU Classpath가 가상 머신, Java 언어 용 컴파일러 또는 Java 프로그래밍 언어로 작성된 프로그램의 핵심 클래스 라이브러리로 수정되지 않은 상태로 사용되는 경우 해당 프로그램을 직접 배포하기위한 라이센스에는 영향을 미치지 않습니다.



0

OpenJDK는 GPL 이지만 라이브러리에 대한 링크는 예외입니다. http://en.wikipedia.org/wiki/OpenJDK

OpenJDK 클래스를 사용하면 내가 생각할 라이브러리 (rt.jar)에 대한 링크가 구성됩니다.

Java의 관점에서 볼 때 해당 컨텍스트의 라이브러리는 분명히 종속 항아리, 전쟁, 클래스 등입니다. 어쨌든 Java 응용 프로그램을 합법적으로 판매 할 수 있다고 확신합니다. 오라클 / 썬은 법적 조치를 취하지 않았습니다.


libstdc ++도 마찬가지입니다. 예외도 있습니다.
Robin Green

rt.jar 및 libstdc ++는 모두 GPL이 아닌 사양의 구현입니다. 본질적으로 내 응용 프로그램을 GPL이 아닌 버전의 libstdc ++에 연결하면 두 버전에서 동일하게 작동합니다 (사양이 올바르게 구현되었다고 가정). 플랫폼이 동적으로 GPL 버전의 라이브러리를로드한다는 사실은 앱에 포함되지 않습니다. 플랫폼 표준을 작성했으며 원하는 라이센스에 적용됩니다.
Berin Loritsch

0

걱정하지 마십시오. 이것은 컴퓨터 프로그래밍 질문이거나 프로그래머와 밀접한 관련이있는 질문입니다.

내가 아는 바에 따르면 일부 GPL 코드와 연결된 소프트웨어를 만드는 경우 프로그램을 배포하면 소스 코드를 해제해야합니다.

그렇다고 소스 포지하기 위해 코드를 공개해야한다는 의미는 아닙니다. 그러나 제 3자가 코드를 요청하면 코드를 제공해야합니다.


질문에 설명 된 활동이 다른 것들과 동등한 것은 GPL 코드에 대한 링크와 관련이 없기 때문에 그 점은 관련이 없습니다.
Robin Green

위의 질문 : C ++ / Java를 사용하여 프로그램을 개발하고 GCC 컴파일러 또는 OpenJDK의 컴파일러를 사용하여 컴파일하면 GPL에 프로그램을 배치하지 않고도 판매 할 수 있습니까?

GPL 코드를 사용하면 릴리스해야한다는 것을 분명히 지정하고 있다고 생각합니다.

죄송합니다. 정확하지 않습니다. 어떤 경우에는 어떤 의미에서 GPL 코드에 연결하는 것이 포함되지만, Classpath 예외가 적용되므로 GPL 하에서 코드를 해제 할 필요가 없습니다.
Robin Green

ahh, ok, 그때는 몰랐습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.