12.3. libstdc

 < Day Day Up > 

12.2. The System Library: libSystem

In Darwin, much is built into the system library , /usr/lib/libSystem.dylib. In particular, the following libraries are included in libSystem.


libc

The standard C library. This library contains the functions used by C programmers on all platforms.


libinfo

The NetInfo library.


libkvm

The kernel virtual memory library.


libm

The math library, which contains arithmetic functions.


libpoll

The poll library.


libpthread

The POSIX threads library, which allows multiple tasks to run concurrently within a single program.


librpcsvc

The RPC services library.


libdbm

Database routines.


libdl

The dynamic loader library.

Symbolic links are provided as placeholders for these libraries. For example, libm.dylib is a symbolic link in /usr/lib that points to libSystem.dylib. Thus, -lm or -lpthread do no harm, but are unnecessary. The -lm option links to the math library, while -lpthread links to the POSIX threads library. Since libSystem provides these functions, you don't need to use these options. However, you should use them to make sure your application is portable to other systems. (Since libm. dylib and libpthread.dylib are symbolic links to libSystem.dylib, the extra -l options refer to the same library.)

In Mac OS X 10.1 and earlier versions, the curses screen library (a set of functions for controlling a terminal display) was part of libSystem.dylib. In Mac OS X 10.2, 10.3, and 10.4, the ncurses library (/usr/lib/libncurses.5.4.dylib) is used in place of curses. You may still encounter source code releases that look for curses in libSystem.dylib, which results in linking errors. You can work around this problem by adding -lcurses to the linker arguments. This is portable to earlier versions of Mac OS X as well, since /usr/lib/libcurses.dylib is a symlink to libncurses in 10.4, 10.3, and 10.2, and to libSystem in earlier versions.


Interestingly enough, there is no symbolic link for libutil, whose functionality is also provided by libSystem. (libutil is a library that provides functions related to login, logout, terminal assignment, and logging.) So, if a link fails because of -lutil, try taking it out to see if that solves the problem.

     < Day Day Up > 


    Mac OS X Tiger for Unix Geeks
    Mac OS X Tiger for Unix Geeks
    ISBN: 0596009127
    EAN: 2147483647
    Year: 2006
    Pages: 176

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net