| <!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"> |
| <LINK REL="stylesheet" HREF="print.css" TYPE="text/css" MEDIA="print"> |
| </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, MacOS X, *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 OS X and pre-OS X) 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> |