Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

cmpdylib(1) [opendarwin man page]

CMPDYLIB(1)						      General Commands Manual						       CMPDYLIB(1)

NAME
cmpdylib - compare two dynamic shared libraries for compatibility SYNOPSIS
cmpdylib oldLibrary newLibrary DESCRIPTION
cmpdylib compares two versions of a dynamic shared library to see if they are compatible with each other. If the two versions are incompat- ible, the reason is printed to stdout, and the exit status is nonzero. If they are compatible, nothing is printed, and the exit status is zero. To see if the two versions are compatible, cmpdylib first verifies that newLibrary was built for all of the architectures that oldLibrary was built for. If so, for each architecture, it checks to see if the global symbols defined in oldLibrary are still defined in newLibrary. It then looks for new symbols, symbols defined in newLibrary that are not defined in oldLibrary. If it finds new symbols, it compares the compatibility version numbers of the two libraries. If the compatibility version number of newLibrary is greater than oldLibrary, the libraries are still compatible. If the compatibility version number is the same or less, the libraries are incompatible. OPTIONS
oldLibrary The older version of the library. newLibrary The newer version of the library. EXAMPLES
This example shows the result of performing cmpdylib on two incompatible versions of the Foundation library. As stated, the versions are incompatible because the newer version was not built for the ppc architecture. cmpdylib /System/Library/Frameworks/Foundation.framework/Foundation Foundation_proj/Foundation cmpdylib: file: Foundation_proj/Foundation does not contain architecture: ppc cmpdylib: new dynamic shared library: Foundation_proj/Foundation does not contain architecture ppc DIAGNOSTICS
The exit status is zero if the library versions are compatible and nonzero if they are incompatible. BUGS
There are lots of other things that could be checked for that are not (such as the Objective C API). Apple Computer, Inc. November 3, 1997 CMPDYLIB(1)

Check Out this Related Man Page

KEXTLIBS(8)						    BSD System Manager's Manual 					       KEXTLIBS(8)

NAME
kextlibs -- find OSBundleLibraries needed by a kext SYNOPSIS
kextlibs [options] [--] kext ... DESCRIPTION
The kextlibs utility searches for library kexts that define symbols needed for linking by kext, printing their bundle identifiers and ver- sions to stdout. If the kext has a multiple-architecture executable, libraries are resolved for each architecture. If any symbols are not found, or are found in multiple libraries, the numbers of such symbols are printed to standard error after the library kext information for each architecture. A handy use of kextlibs is to run it with just the -xml flag and pipe the output to pbcopy(1); if the exit status is zero (indicating no undefined or multiply-defined symbols), you can open your kext's Info.plist file in a text editor and paste the library declarations over the OSBundleLibraries property. You can use kextlibs to find libraries for older releases of Mac OS X using the -repository option to specify an extensions folder to search other than the extensions directories for the root volume (although releases prior to Mac OS X 10.6 (Snow Leopard) don't check for architec- ture-specific properties, so be sure to check the output and edit as needed). If you don't explicitly specify a repository directory, kextlibs searches the root volume's /System/Library/Extensions and /Library/Extensions directories. OPTIONS
-h, -help Print a help message describing each option flag and exit with a success result, regardless of any other options on the command line. -all-symbols Print reports on all symbols that remain undefined, all symbols that have been resolved in one library kext each, and all symbols that have multiple definitions in different library kexts. Equivalent to specifying all of -undef-symbols, -onedef-symbols, and -multdef-symbols. Normally only the number of missing and duplicate symbols is printed. -c, -compatible-versions Print the compatible version rather than the current version. -multdef-symbols Print all undefined symbols from kext found in more than one library kext, followed by those library kexts' bundle identifiers and versions (or compatible versions if -compatible-versions was specified). Normally only the number of multiply-defined symbols is printed. -non-kpi Search the compatibility kext, com.apple.kernel.6.0, rather than any of the com.apple.kpi.* system kexts. Use of this option is not recommended: The exact kernel component (mach, bsd, libkern, or iokit) cannot be determined, and the compatible version of com.apple.kernel is locked to its current version, so kexts linking against it can only load against that exact version. -onedef-symbols Print all undefined symbols from kext found in exactly one library kext, followed by that library kext's bundle identifier and ver- sion (or compatible version if -compatible-versions was specified). Normally nothing is printed about symbols that are found once. -r directory, -repository directory Search directory for dependencies. This option may be specified multiple times. You can use this to get library declarations rela- tive to a set of extensions other than those of the running system (such as for a different release of Mac OS X), or to include a side directory of library kexts. Note: If you specify a directory with this option, the system extensions folders are not implic- itly searched. See -system-extensions. -e, -system-extensions Add /System/Library/Extensions and /Library/Extensions to the list of directories to search. If you don't specify any directories or kexts, this is used by default. -undef-symbols Print all undefined symbols from kext that can't be found in any library kexts. Normally only the number of symbols not found is printed. -unsupported Search unsupported library kexts for symbols (by default they are not searched). -v [0-6 | 0x####], -verbose [0-6 | 0x####] Verbose mode; print information about program operation. Higher levels of verbosity include all lower levels. You can specify a level from 0-6, or a hexadecimal log specification (as described in kext_logging(8)). For kextlibs, the decimal levels 1-6 generally have little effect. -xml Print an XML fragment to stdout suitable for copying and pasting directly into an Info.plist file. This option prints information about libraries to stdout, and then prints information about symbols to stderr. In XML mode, if the libraries for all architectures are the same, only one set of OSBundleLibraries is printed; if any differ from any others, architecture-specific listings for all architectures are printed (OSBundleLibraries_i386, OSBundleLibraries_x86_64, and so on). -- End of options. FILES
/System/Library/Extensions/ The standard system repository of kernel extensions. /Library/Extensions/ The standard repository of non Apple kernel extensions. DIAGNOSTICS
The kextlibs utility exits with a status of 0 on completion if all undefined symbols are found exactly once; with a status of 1 if any unde- fined symbols remain, or with a status of 2 if any symbols are found in more than one library kext (whether or not any undefined symbols remain), and with another nonzero status on some other problem. BUGS
kextlibs uses a simple algorithm of string matching to resolve symbols, and does not apply any of the patching that the full link process does. This can cause it to fail when searching for symbols in a kext built against an SDK for a prior release of Mac OS X than the one on which kextlibs is being used. In such cases, you can run kextlibs against the Extensions folder of that prior release using the -repository option. Many single-letter options are inconsistent in meaning with (or directly contradictory to) the same letter options in other kext tools. SEE ALSO
kextutil(8), kextfind(8), kext_logging(8) Darwin November 14, 2012 Darwin
Man Page