mirror of https://gitee.com/openkylin/libcdio.git
182 lines
7.4 KiB
Plaintext
182 lines
7.4 KiB
Plaintext
See README.develop if you plan use the git or development version.
|
|
|
|
0. To compile the source, you'll need a POSIX shell and utilities (sh,
|
|
sed, grep, cat), an ANSI C compiler like gcc, and a POSIX "make"
|
|
program like GNU make or remake. You may also want to have "libtool" installed
|
|
for building portable shared libraries.
|
|
|
|
1. Uncompress and unpack the source code using for example "tar". Recent
|
|
versions of GNU tar can do this in one step like this:
|
|
tar -xpf libcdio-*.bz # or libcdio-*.gz
|
|
|
|
2. Go into the directory, run "configure" followed by "make":
|
|
|
|
cd libcdio-*
|
|
sh ./configure MAKE=make # or remake or gmake
|
|
|
|
3. If step 2 works, compile everything:
|
|
|
|
make # or remake
|
|
|
|
4. Run the regression tests if you want:
|
|
|
|
make check # or remake check
|
|
|
|
5. Install. If the preceding steps were successful:
|
|
|
|
make install # you may have to do this as root
|
|
# or "sudo make install"
|
|
|
|
|
|
If you have problems linking libcdio or libiso9660, see the BSD
|
|
section. You might also try the option --without-versioned-libs. However
|
|
this option does help with the situation described below so it is
|
|
preferred all other things being equal.
|
|
|
|
If you are debugging libcdio, the libtool and the dynamic libraries
|
|
can make things harder. I suggest setting CFLAGS to include
|
|
'-fno-inline -g' and using --disable-shared on configure.
|
|
|
|
|
|
VCD dependency:
|
|
---------------
|
|
One thing that confuses people is the "dependency" on libvcdinfo from
|
|
vcdimager, while vcdimager has a dependency on libcdio. This libcdio
|
|
dependency on vcdimager is an optional (i.e. not mandatory) dependency,
|
|
while the vcdimager dependency right now is mandatory. libvcdinfo is
|
|
used only by the utility program cd-info. If you want cd-info to use
|
|
the VCD reporting portion and you don't already have vcdimager
|
|
installed, build and install libcdio, then vcdimager, then configure
|
|
libcdio again and it should find libvcdinfo.
|
|
|
|
People who make packages might consider making two packages, a libcdio
|
|
package with just the libraries (and no dependency on libvcdinfo) and
|
|
a libcdio-utils which contains cd-info and iso-info, cd-read,
|
|
iso-read. Should you want cd-info with VCD support then you'd add a
|
|
dependency in that package to libvcdinfo.
|
|
|
|
Another thing one can do is "make install" inside the library, or run
|
|
"configure --without-vcd-info --without-cddb" (since libcddb also has
|
|
an optional dependency on libcdio).
|
|
|
|
Microsoft Windows
|
|
-------
|
|
|
|
Building under Microsoft Windows is supported for cygwin
|
|
(http://www.cygwin.com). You need to have the cygwin libiconv-devel
|
|
package installed.
|
|
|
|
For MinGW (http://www.mingw.org/) also works provided you have
|
|
libiconv installed.
|
|
|
|
Support for Microsoft compilers (e.g. Visual C) is not officially
|
|
supported. You need to make your own "project" files. Don't
|
|
undertake this unless you are willing to spend time hacking. In the
|
|
past xboxmediacenter team folks I believe have gone this route, as has
|
|
Pete Batard in his rufus project. You may be able to use their project
|
|
files as a starting point.
|
|
|
|
XBOX
|
|
-------
|
|
|
|
Consult the xboxmediacenter team (www.xboxmediacenter.de)
|
|
|
|
|
|
BSD, FreeBSD, NetBSD
|
|
---
|
|
|
|
Unless you use --without-versioned-libs (not recommended), you need to
|
|
use GNU make or remake (http://bashdb.sf.net/remake). GNU make can be
|
|
found under the name "gmake".
|
|
|
|
If you use another make you are likely to get problems linking libcdio
|
|
and libiso9660.
|
|
|
|
|
|
Solaris
|
|
-------
|
|
|
|
You may need to use --without-versioned-libs if you get a problem
|
|
building libcdio or libiso9660.
|
|
|
|
If you get a message like:
|
|
libcdio.so: attempted multiple inclusion of file
|
|
|
|
because you have enable vcd-info and it is installed, then the only
|
|
way I know how to get around is to use configure with --disable-shared.
|
|
|
|
OS Support
|
|
---------------
|
|
|
|
Support for Operating Systems's is really based on the desire, ability
|
|
and willingness of others to help out. I use GNU/Linux so that
|
|
probably works best. Before a release I'll test on servers I have
|
|
available. I also announce a pending release on libcdio-devel@gnu.org
|
|
and ask others to test out.
|
|
|
|
Specific libcdio configure options and environment variables
|
|
---------------
|
|
--disable-cxx Disable C++ bindings (default enabled)
|
|
--enable-cpp-progs make C++ example programs (default enabled)
|
|
--disable-example-progs Don't build libcdio sample programs
|
|
--disable-dependency-tracking speeds up one-time build
|
|
--enable-dependency-tracking do not reject slow dependency extractors
|
|
--disable-largefile omit support for large files
|
|
--enable-shared[=PKGS] build shared libraries [default=yes]
|
|
--enable-static[=PKGS] build static libraries [default=yes]
|
|
--enable-fast-install[=PKGS]
|
|
optimize for fast installation [default=yes]
|
|
--disable-libtool-lock avoid locking (might break parallel builds)
|
|
--disable-joliet don't include Joliet extension support (default
|
|
enabled)
|
|
--disable-rpath do not hardcode runtime library paths
|
|
--enable-rock include Rock-Ridge extension support (default
|
|
enabled)
|
|
--enable-cddb include CDDB lookups in cd_info (default enabled)
|
|
--enable-vcd-info include Video CD Info from libvcd
|
|
--enable-maintainer-mode create documentation and manual packages.
|
|
For this you need texinfo and help2man installed
|
|
|
|
Optional Packages:
|
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
|
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
|
--without-cd-drive don't build program cd-drive (default with)
|
|
--without-cd-info don't build program cd-info (default with)
|
|
--without-cd-paranoia don't build program cd-paranoia and paranoia
|
|
libraries (default with)
|
|
--without-cdda-player don't build program cdda-player (default with)
|
|
--with-cd-paranoia-name name to use as the cd-paranoia program name (default
|
|
cd-paranoia)
|
|
--without-cd-read don't build program cd-read (default with)
|
|
--without-iso-info don't build program iso-info (default with)
|
|
--without-iso-read don't build program iso-read (default with)
|
|
--without-versioned-libs
|
|
build versioned library symbols (default enabled if
|
|
you have GNU ld)
|
|
--with-pic try to use only PIC/non-PIC objects [default=use
|
|
both]
|
|
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
|
|
--with-gnu-ld assume the C compiler uses GNU ld default=no
|
|
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
|
|
--without-libiconv-prefix don't search for libiconv in includedir and libdir
|
|
|
|
Some influential environment variables:
|
|
CC C compiler command
|
|
CFLAGS C compiler flags
|
|
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
|
|
nonstandard directory <lib dir>
|
|
LIBS libraries to pass to the linker, e.g. -l<library>
|
|
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
|
|
you have headers in a nonstandard directory <include dir>
|
|
CXX C++ compiler command
|
|
CXXFLAGS C++ compiler flags
|
|
CPP C preprocessor
|
|
CXXCPP C++ preprocessor
|
|
PKG_CONFIG path to pkg-config utility
|
|
CDDB_CFLAGS C compiler flags for CDDB, overriding pkg-config
|
|
CDDB_LIBS linker flags for CDDB, overriding pkg-config
|
|
VCDINFO_CFLAGS
|
|
C compiler flags for VCDINFO, overriding pkg-config
|
|
VCDINFO_LIBS
|
|
linker flags for VCDINFO, overriding pkg-config
|