우분투는 라이브러리 파일을 어디에 저장합니까? 추가하고 싶지만 실제로 우분투가 그것을 어디에 저장하는지

c 컴파일에 사용할 라이브러리를 추가하고 싶지만 실제로 우분투가 그것을 어디에 저장하는지 모르겠습니다.



답변

귀하의 질문에 대한 귀하의 의견을 바탕으로, 당신이 정말로 요구하는 것은 “내가 작성한 커스텀 라이브러리를 어떻게 설치하고 어디에 두어야합니까?”라고 생각합니다.

일반적으로 머신에서 다른 사용자를 위해 로컬로 빌드 된 항목은 / usr / local 트리에 저장됩니다. 헤더 파일은 / usr / local / include에 있어야합니다. 컴파일 된 라이브러리는 / usr / local / lib로 이동해야합니다. .c 파일은 라이브러리의 일부가 아니며 소스의 일부이며 일반적으로 최종 사용자의 사용을 위해 설치되지 않은 파일입니다. 이 위치 중 하나에 파일을 넣으려면 루트 액세스 권한이 필요합니다.

라이브러리를 빌드하려면 먼저 정적 또는 동적 (공유) 라이브러리를 원하는지 결정해야합니다. 공유 라이브러리 작성에 대한 자세한 정보는 3.4, 공유 라이브러리 작성 ( http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html) 섹션에 있습니다 . (또한 물건을 넣을 위치에 대한 권장 사항이 있습니다. 대부분의 개발자에게는 의견이 있습니다. 🙂


답변

라이브러리에 따라 우분투는 주로 세 위치에 라이브러리를 저장합니다.

  1. / lib
  2. / usr / lib
  3. / usr / local / lib

다음은 파일 시스템 계층 표준에서 가져온 것입니다

/ lib

/ lib 디렉토리에는 시스템을 부팅하고 루트 파일 시스템에서 명령을 실행하는 데 필요한 공유 라이브러리 이미지가 포함되어 있습니다. / bin 및 / sbin의 바이너리로.

/ usr / lib

/ usr / lib에는 사용자 나 셸 스크립트에서 직접 실행하지 않는 개체 파일, 라이브러리 및 내부 바이너리가 포함되어 있습니다. [22]

응용 프로그램은 / usr / lib 아래에 단일 하위 디렉토리를 사용할 수 있습니다. 응용 프로그램이 서브 디렉토리를 사용하는 경우, 응용 프로그램이 독점적으로 사용하는 모든 아키텍처 종속 데이터는 해당 서브 디렉토리 내에 있어야합니다.

/ usr / local / lib 에는 로컬 라이브러리가 포함되어 있습니다. 즉,이 시스템에 특정한 라이브러리가 있지만 FHS에서 / usr / local / lib에 대한 참조를 찾을 수 없으며 / usr / local에 대한 설명 만 포함되어 있습니다.


답변

우분투는 Filesystem Hierarchy Standard ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard )를 따르며 , 일반 응용 프로그램 라이브러리는 / usr / lib에 저장해야합니다.

라이브러리 개발 / 관리는 사소한 주제가 아니며,보다 자세한 문서를 읽어야합니다. 다음은 훌륭한 자습서입니다.
http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html


답변

컴파일러에게 라이브러리를 찾을 수있는 위치를 알려 주어야합니다. 라이브러리의 경로가 “/path/to/lib/libfoo.a”라고 가정하면 다음과 같이 프로그램 “hello.c”를 컴파일하고 링크 할 수 있습니다.

gcc -L/path/to/lib -lfoo hello.c

이것은 우분투에만 국한된 것은 아니며, 실제로 알고있는 모든 C 컴파일러는 이러한 플래그를 지원합니다.