소스에서 프로젝트를 컴파일하는 것과 관련된 한 가지를 이해하지 못합니다.
타사 라이브러리가 누락된 경우 어떻게 대응해야 합니까? 이런 종류의 문제를 해결하는 가장 좋은 방법은 무엇입니까?
예를 들어, github에서 일부 코드를 복제했습니다. 문서에는 내가 해야 할 유일한 일은 makefile을 실행하는 것이라고 나와 있습니다. 그러나 컴파일하는 동안 다음을 얻습니다.
libmy/include/somefile.h:16:10: fatal error: 'GL/gl.h' file not found
#include <GL/gl.h>
어떻게 해야 합니까? GL/gl.h가 무엇인지 검색해 보면 설치해야 할 패키지에 대한 정보를 찾을 수 있습니다. 하지만 누락된 제목을 모두 Google에 검색할 필요는 없다고 생각합니다. 이는 좋은 해결책이 될 수 없습니다.
나는 다음과 같은 것을 사용할 수 있습니다적절한 파일 검색어쩌면 설치해야 할 라이브러리를 찾을 수도 있습니다. 하지만 여전히 이 방법으로 누락된 파일을 모두 확인해야 합니다.
문제는 프로젝트에 있다고 생각합니다. 하지만 어떻게 해결해야 할지 모르겠습니다. makefile은 모든 것이 설치되었는지 확인해야 합니까?
나는 읽었다패키지 구성이것이 내 문제를 해결하는 데 도움이 될 것 같습니다. 내가 사용해야 할까?패키지 구성누락된 라이브러리를 확인하시겠습니까?
만약패키지 구성누락되었거나 사용자가 설치를 원하지 않습니까?
이런 종류의 문제를 해결하는 더 나은 솔루션이 있습니까?
답변1
configure
많은 패키지에는 호스트에 설치된 종속성을 확인하는 목적을 가진 특수 스크립트가 포함되어 있습니다 . 다른 것들은 일반적으로 소스 패키지 내의 README 또는 INSTALL 파일에 언급된 다른 메커니즘을 사용합니다. 독립 실행형 프로그램으로 컴파일할 수 있는 사람은 거의 없으며 종속성을 감지하거나 종속성을 가지려고 시도하지 않습니다.
GitHub에서 코드를 얻는 경우, 이와 같이 컴파일되지 않는 불완전한 코드에 대비해야 합니다. 그런 다음 파일이 어느 종속성에서 왔는지 확실히 알 수 없는 경우(다운로드한 코드에 문서가 없는 경우) Google에서 검색하면 됩니다. 또한 Unix 경험이 늘어남에 따라 많은 헤더 파일 이름이 기억될 것입니다 :-)
합리적인 패키지에는 종속성을 확인하는 스크립트(또는 기타 메커니즘)가 있으며 필요한 종속성을 설명하는 문서 및/또는 불완전하거나 불량한 패키지에는 이러한 종속성이 없습니다.