<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> libsndfile : pkg-config </TITLE> <META NAME="Author" CONTENT="Erik de Castro Lopo (erikd AT mega-nerd DOT com)"> <LINK REL=StyleSheet HREF="libsndfile.css" TYPE="text/css" MEDIA="all"> </HEAD> <BODY> <BR> <H1>libsndfile and pkg-config</H1> <P> From version 1.0.0 libsndfile has had the ability to read and write files of greater than 2 Gig in size on most OSes even if sizeof (long) == 4. OSes which support this feature include Linux (2.4 kernel, glibc6) on x86, PPC and probably others, Win32, MacOSX, *BSD, Solaris and probably others. OSes on 64 bit processors where the default compile environment is LP64 (longs and pointers are 64 bit ie Linux on DEC/Compaq/HP Alpha processors) automatically support large file access. </P> <P> Other OSes including Linux on 32 bit processors, 32 bit Solaris and others require special compiler flags to add large file support. This applies to both the compilation of the library itself and the compilation of programs which link to the library. </P> <P> Note : People using Win32, MacOS (both OSX and pre-OSX) or *BSD can disregard the rest of this document as it does not apply to either of these OSes. </P> <P> The <B>pkg-config</B> program makes finding the correct compiler flag values and library location far easier. During the installation of libsndfile, a file named <B>sndfile.pc</B> is installed in the directory <B>${libdir}/pkgconfig</B> (ie if libsndfile is installed in <B>/usr/local/lib</B>, <B>sndfile.pc</B> will be installed in <B>/usr/local/lib/pkgconfig/</B>). </P> <P> In order for pkg-config to find sndfile.pc it may be necessary to point the environment variable <B>PKG_CONFIG_PATH</B> in the right direction. </P> <PRE> export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig </PRE> <P> Then, to compile a C file into an object file, the command would be: </P> <PRE> gcc `pkg-config --cflags sndfile` -c somefile.c </PRE> <P> and to link a number of objects into an executable that links against libsndfile, the command would be: </P> <PRE> gcc `pkg-config --libs sndfile` obj1.o obj2.o -o program </PRE> <P> Obviously all this can be rolled into a Makefile for easier maintenance. </P> </BODY> </HTML>