라이브러리 함수는 GNU C 라이브러리 (glibc 라고도 함) 와 같이 프로그램이 실행될 때 사용되는 API 모음입니다. 우리 모두는 라이브러리 함수가 일반적으로 몇 가지 기본 기능을 구현한다는 것을 알고 있습니다. 라이브러리 함수를 사용하면 프로그램의 실행 효율성을 높일 수 있을 뿐만 아니라 프로그래밍의 품질도 향상시킬 수 있습니다. 하지만 라이브러리가 GPL 프로토콜을 사용 하는 경우, 프로그램에서 라이브러리를 사용 하 여 프로그램이 감염 됩니까? 이 문제에 대해 다른 관점이 있다. 자유 소프트웨어 재단 (FSF) 은 이런 상황에서 당신의 절차가 감염될 것이라고 생각합니다. GPL 라이브러리에 링크하면 전체 프로그램이 배포될 때 오픈 소스여야 합니다. 그렇지 않으면 이 라이브러리를 사용할 수 없습니다.
그러나, 우리는 이미 라이브러리 함수가 기본, 기본 함수라고 말했다. GPL 프로토콜을 사용하면 특허 프로그램에 의한 이 라이브러리 기능의 사용이 제한되며 자유 소프트웨어의 보급에 불리하다. 그래서 우리는 주로 라이브러리에 사용되는 GNU Lesser General Public License (LGPL) 를 제안했습니다. 가장 큰 특징은 비 자유 소프트웨어를 감염되지 않고 라이브러리에 연결할 수 있다는 것입니다.
따라서 자유 소프트웨어 재단의 관점에서 볼 때 GPL 라이브러리에 연결된 프로그램은 오픈 소스여야 하고 LGPL 라이브러리에 연결된 프로그램은 오픈 소스일 필요가 없습니다.
FSF 설명에서 소프트웨어 집계에 대한 별도의 설명은 주로 이러한 프로그램이 독립 프로그램인지 동일한 프로그램의 다른 부분인지 구별하기 위한 것입니다. 예를 들어 FSF 는 프로그램 간 통신 메커니즘 (exec, pipes, RPC, 주소 공간이 있는 * * 함수 호출 등) 에서 판단할 수 있다고 생각합니다. ) 및 통신의 의미 (어떤 정보를 교환합니까?)
프로그램이 모두 하나의 실행 파일에 포장되어 있다면, 그것은 하나의 프로그램이어야 하며, 전체 프로그램은 GPL 에 부합해야 한다. (알버트 아인슈타인, 프로그램명언) 그러나 프로그램 간의 통신이 파이프, 소켓 및 명령줄 매개 변수를 기반으로 하는 경우 이러한 프로그램은 기본적으로 별도의 프로그램으로 판단할 수 있으며 프로그램마다 다른 프로토콜을 준수할 수 있습니다. 프로그램 간에 교환되는 데이터 구조가 특히 복잡하고 의미가 매우 비슷하면 일반적으로 동일한 프로그램으로 간주될 수 있습니다.
그러나, FSF 는 또한 이것이 결국 법적 문제이며, 합산 절차가 단일인지 같은 큰 절차인지 판단하기 위해 판사가 결정해야 한다고 강조했다.
리눅스가 GPL 프로토콜을 사용하면 리눅스로 이식된 프로그램이 GPL 에 감염될까요? 사실, 프로그램이 GPL 의 영향을 받는지 여부는 기본 운영 체제와 무관합니다. 주로 우리가 위에서 말한 첫 번째 항목에 따라, 당신은 어떤 협의를 사용하고 있습니까? 만약 프로그램이 Linux 의 라이브러리를 전혀 사용하지 않거나 LGPL 라이브러리만 사용한다면, 그것은 당연히 감염되지 않을 것이다. 만약 그것이 GPL 라이브러리를 사용한다면, GPL 에 감염될 것이다. FSF 에 따르면 GPL 이 발표한 라이브러리는 일반적으로 매우 전문적인 라이브러리이며, 이는 다른 플랫폼에서는 찾아볼 수 없는 라이브러리입니다. Linux 독점이기 때문에 오픈 소스는 문제없다.
MySQL 은 이중 프로토콜 라이센스를 사용하고 커뮤니티 버전은 GPLv2 를 사용합니다. 자바 개발을 예로 들면 프로그램과 데이터베이스가 통신하는 방식은 소켓이다. 이 문서의 앞부분에 따르면 우리의 Java 프로그램은 MySQL 에 감염되거나 GPL 을 준수할 필요가 없습니다. 하지만 한 가지 문제가 있습니다. 우리가 사용하는 구동은 모두 Oracle 이 GPL 프로토콜에서 제공하는 것이다. 우리는 확실히 이 드라이버들을 가방에 넣었기 때문에, 우리의 프로그램은 이 구동에 감염되었다. 네가 너의 프로그램을 판매할 때, 너는 반드시 동시에 소스 코드를 상대방에게 주어야 한다.
그러나 실제로 Mysql 을 사용하려면 오픈 소스 프로그램 소스 코드가 필요하다는 말은 거의 없습니다. 인터넷을 검색해 보니 여러 가지 관점이 있는데, 대부분의 사람들은 기본적으로 이 문제를 간과하고 있다. 오픈 소스가 가장 설득력 있는 이유는 "Java 가 JDBC 를 제공했고, MySQL 드라이버는 JDBC API 의 구현일 뿐, 바꿀 수 있고, 프로그램의 필수 부분이 아니다" 라고 생각한다.
이 문제에 있어서, 인터넷에는 여전히 상당히 큰 차이가 있다. 지금까지 권위설도 없고 그에 상응하는 판례도 없다. 물론, 만약 당신의 프로그램이 발행을 위한 것이 아니라면, 이 문제에 대해 전혀 고민할 필요가 없습니다. 결국 이것은 법적 문제이다.
GPL 의 전염성 프로그램은 프로그램의 오픈 소스와 대부분의 프로그래머가 프로그램을 사용할 수 있는 자유를 보장하지만, 일부 특허 프로그램이 GPL 소프트웨어를 사용할 수 있는 자유를 제한한다. 매우 명확한 경우 GPL 에 따라 해당 프로그램을 열어야 하지만, 모호한 상황에서 소스 코드를 열도록 요구하면 판사가 판단하게 한다.