gcc 또는 g++에서 사용되는 정적 라이브러리는 어디에 저장되며 어떻게 식별됩니까?

gcc 또는 g++에서 사용되는 정적 라이브러리는 어디에 저장되며 어떻게 식별됩니까?

내 Ubuntu(Linux) 시스템에 정적 라이브러리가 있는지 확인하려고 노력해 왔습니다. 언제 발견되며 어떤 접미사가 이를 식별합니까?

답변1

Ubuntu와 같은 Debian 파생 시스템에서 시스템과 함께 제공되는 정적 라이브러리( 수동이 아닌 apt/ 를 통해 설치됨 )에는 일반적으로 접미사가 붙습니다 .dpkg/usr/lib/<target-triplet>/.a

예를 들어, 내 x86-64 debian 시스템에서는 다음과 같습니다.

$ ls /usr/lib/x86_64-linux-gnu/*.a
/usr/lib/x86_64-linux-gnu/libBrokenLocale.a
/usr/lib/x86_64-linux-gnu/libFS.a
/usr/lib/x86_64-linux-gnu/libGLU.a
/usr/lib/x86_64-linux-gnu/libICE.a
/usr/lib/x86_64-linux-gnu/libImlib2.a
...

apt-get install <package>-dev*.so이러한 라이브러리는 일반적으로 동적 라이브러리와 함께 설치됩니다.

그럼에도 불구하고 라이브러리를 직접 설치하는 일부 패키지가 있습니다 /usr/lib.libgraphicsmagick1-dev.

컴파일러는 아래에 일부 "내부" 라이브러리(등)를 좋아하고 설치합니다 . gcc예 를 들면 다음과 같습니다.clanglibstdc++/usr/lib/<compiler-name>/...

/usr/lib/gcc/x86_64-linux-gnu/6.3.0/libgcc.a

다른 배포판은 다른 규칙을 따를 수 있습니다. 예를 들어 rhel/centos에서는 모든 개발 라이브러리가 /usr/lib64/또는 /usr/lib32/에 의해 컴파일됩니다. 컴파일 파일은 정적이든 동적이든 컴파일러가 라이브러리를 찾는 위치를 항상 정확하게 알려줍니다.<package>-devel-*gcc -v

관련 정보