배포판에서 라이브러리 및 헤더 파일의 가능한 모든 위치를 찾는 방법은 무엇입니까?

배포판에서 라이브러리 및 헤더 파일의 가능한 모든 위치를 찾는 방법은 무엇입니까?

나는 라이브러리와 헤더 파일의 위치가 배포판마다 크게 다르다는 것을 발견했습니다. 예를 들어 Fedora에는 가 있고 /usr/lib64/libbfd.aUbuntu에는 가 있습니다 /usr/lib/x86_64-linux-gnu/libbfd.a. 또는 Fedora에 하나 /usr/lib/gcc/x86_64-redhat-linux/10/include/stdatomic.h, Ubuntu에 하나 가 있습니다 ./usr/lib/gcc/x86_64-linux-gnu/10/include/stdatomic.h

각 릴리스의 위치 목록을 유지하지 않고도 확인해야 할 위치를 알 수 있는 방법이 있습니까?

답변1

당신은 할 수C 전처리기에 물어보세요(적어도 GCC 프런트엔드 기반의 모든 것에는):

$ cpp -v /dev/null -o /dev/null
...
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/10/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/10/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-E' '-v' '-o' '/dev/null' '-mtune=generic' '-march=x86-64'

이는 헤더 검색 경로("#include <...>여기에서 검색 시작:"과 "검색 목록 끝" 사이의 항목)와 라이브러리 검색 경로(주어진 값 LIBRARY_PATH)를 제공합니다.

일부 라이브러리는 및 (라이브러리 이름 포함) pkg-config로 찾을 수 있는 파일을 제공합니다.pkg-config --cflagspkg-config --libs

관련 정보