On Sun, 2014-11-23 at 13:08 +0000, Luís Oliveira wrote:
On Sun, Nov 23, 2014 at 12:27 AM, Stelian Ionescu sionescu@cddr.org wrote:
Most often than not, but I know of cases where the headers for the current version of a library are put directly under /usr/include, whereas the older versions are in subdirectories of /usr/include and require pkg-config, and therefore if pkg-config is not used, the CFFI code will be compiled against the wrong(newer) library. IIRC, this is the case with BerkeleyDB and Postgres's libpq on some distributions.
OK, that makes sense. In this particular case, though, we're not specifying any version:
#+linux (pkg-flags "libffi")
How are versions specified in pkg-config and how do they relate with the major version in the .so file name? (I googled a little bit for examples but couldn't find any.)
There's no standard across libraries, only conventions for specific libraries; e.g. my openSUSE has libpng-1.2 in /usr/lib64/pkgconfig/libpng12.pc and linbpng-1.6 in /usr/lib64/pkgconfig/libpng16.pc
Some libraries(like libpng) break API at every major release and the pkg-config names contain the package version, others break API more seldom and the pkg-config version is a slowly increasing serial number unrelated to the release version; also the pkg-config name may or may not contain dots and dashes, etc...