I am on Debian buster. I was reading the manpage of pkg-config and found that .pc files are and can be listed in many places . From the manpage -

pkg-config retrieves information about packages from special metadata files. These files are named after the package, and has a .pc extension. On most systems, pkg-config looks in /usr/lib/pkgconfig, /usr/share/pkgconfig, /usr/local/lib/pkgconfig and /usr/local/share/pkgconfig for these files. It will additionally look in the colon-separated (on Windows, semicolon-separated) list of directories specified by the PKG_CONFIG_PATH environment variable.

  • From pkg-config manpage

sure enough I saw that there are packages in /usr/lib/pkgconfig/, /usr/lib/x86_64-linux-gnu/pkgconfig/ and /usr/share/pkgconfig/ , while I can understand the /usr/local/.. part for locally compiled/built apps. I do not understand why there is a distinction between /usr/lib/pkgconfig/ and /usr/share/pkgconfig . Is it something to do with some things need to be in userspace https://en.wikipedia.org/wiki/User_space or something else entirely ?

1 Answer 1


The distinction is related to architecture independence. .pc files which might be architecture-specific go in /usr/lib (on Debian, /usr/lib/pkgconfig for pre-multiarch packages, /usr/lib/<triplet>/pkgconfig for multiarch packages), .pc files which are sure to be architecture-independent can go in /usr/share (only /usr/share/pkgconfig, no need to distinguish triplets here).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.