우분투는 라이브러리 파일을 어디에 저장합니까?


17

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


5
그것은 / usr / lib & / usr / include에 저장
karthick87

내 라이브러리를 / usr / include에서 찾았습니다. 라이브러리를 넣는 방법은 무엇입니까? 헤더 파일과 ac 파일을 그 근처에 두어야합니까? 또는 헤더와 함수를 하나의 .h 파일로 작성해야합니까?
david25

3
라이브러리와 헤더는 서로 다릅니다. / usr / include에는 라이브러리가 없으며 라이브러리에서 사용할 수있는 함수 / 객체의 정의 인 헤더가 포함되어 있습니다. 질문은 개선되어야하며 달성하려는 목표를 이해하기 어렵습니다.
João Pinto

답변:


11

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

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

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


11

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

  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에 대한 설명 만 포함되어 있습니다.



0

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

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

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


-2

우분투에서는에 /usr/include있습니다.


1
헤더 파일 은에/usr/include있습니다. 라이브러리의 실제 바이너리는 거기에 저장되지 않습니다. 헤더는 라이브러리의 일부로 간주 될 수 있지만 별도로 설치해야하며 라이브러리를 사용하는 프로그램을 컴파일 하는 데 사용됩니다. 라이브러리를 사용하는 프로그램이 컴파일되면 더 이상 헤더 파일이 필요하지 않습니다.
Eliah Kagan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.