나는 라이브러리와 헤더 파일의 위치가 배포판마다 크게 다르다는 것을 발견했습니다. 예를 들어 Fedora에는 가 있고 /usr/lib64/libbfd.a
Ubuntu에는 가 있습니다 /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 --cflags
pkg-config --libs