내 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
예 를 들면 다음과 같습니다.clang
libstdc++
/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