blob: 7cf0a33aeabda3551ad498c6b5d988dde01f0068 [file] [log] [blame]
Unless otherwise noted, these install instructions are for the
Linux operating system. See below for other operating systems.
By default, the Makefile will build for Linux with a shared library.
The invocation sequence is:
make
make install [may need root permission]
Unless overridden or edited in the Makefile, INSTDIR places the executables
in the /usr/local/bin directory, LIBDIR places libraries in the
/usr/local/lib directory, MANDIR places the man pages in the
/usr/local/share/man directory and INCLUDEDIR places header files in the
/usr/local/include/scsi directory. For FreeBSD the default MANDIR is
/usr/local/man .
Other Makefile targets that might be useful:
make clean # remove .o, executables, core and .depend file
make depend # generate dependency hierarchy in .depend file
make dep # same as 'make depend'
make sg_inq # build a specific executable (e.g. 'sg_inq')
make uninstall # removes executables, libraries and build remnants
make -f no_lib/Makefile.linux # build without a library
./make_no_lib.sh sg_inq # is a simple script; in this case it expands to:
# make -f no_lib/Makefile.linux sg_inq
Note that the main Makefile does _not_ call the Makefiles in the
subdirectories (i.e. archive, examples and utils directories).
By default, this package now builds a shared library called
libsgutils.so and the corresponding static library: libsgutils.a .
The GNU "libtool" is required by sg3_utils to build its libraries.
The 'make' will build those libraries and executables and put them
in the ".libs" subdirectory (as libtool requires/enforces).
The 'make' puts scripts in the main directory with the same names as
the utilities (e.g. sg_dd, sg_inq etc) which set up an appropriate
environment and call the "real" executable "hiding" in the ".libs"
subdirectory.
The "make install" will install the libraries in the /usr/local/lib
directory. If an executable cannot find the libsgutils shared library
(check with 'ldd sg_inq' for example) then the addition of "/usr/local/lib"
to the /etc/ld.so.conf file may be required in some distributions.
A "spec" file is included for building rpm packages. It is called
sg3_utils.spec . To build binary and source rpms place a copy of the
gzipped tarball in the "SOURCES" directory and place a copy of
sg3_utils.spec in the "SPEC" directory. These directories are found under
/usr/src/redhat on redhat/fedora distributions. Then from the "SPEC"
directory execute "rpmbuild -ba sg3_utils.spec". If all goes well a source
rpm should be found in the SRPMS directory and binary rpms in the RPMS/i386
directory (for i386 architecture). Note the spec file will only build those
utilities found in the main directory. When the sg3_utils binary rpm is
installed the executables and their associated man pages should be placed in
appropriate places. The sg3_utils.spec file also builds a libsgutils shared
object (shared library) and a libsgutils-*-devel shared object with a static
library and the sg_lib.h, sg_cmds.h sg_cmds_basic.h, sg_cmds_extra.h and
sg_pt.h header files.
Binary rpms (at least in the RedHat distribution) tend to install
executables in /usr/bin and libraries in /usr/lib .
To build debian "deb" (binary) packages, first untar the tarball, then
change directory to the top level within the sg3_utils source. Then:
# chmod +x debian/rules
# dpkg-buildpackage -b -rfakeroot
The binary deb packages will be placed in the parent directory (of
the sg3_utils source directory) if all goes well. There is now
a script called build_debian.sh in the main directory which invokes
those two commands.
If the shared object (library) is troublesome or unwanted then
a "no_lib" version of the Makefile and the sg3_utils.spec file
can be found in the "no_lib" subdirectory.
FreeBSD
=======
In FreeBSD, the utilities can be built with "make -f Makefile.freebsd".
This will build a shared object (i.e. libsgutils.so and friends) that
the utilities depend on. To install use "make -f Makefile.freebsd install".
These makes depend on libtool. To build without reliance on a shared
library (and thus libtool) use "make -f no_lib/Makefile.freebsd" (or
execute the "make_no_lib_freebsd.sh" script which does the same thing).
Utilities that are linux specific (e.g. sg_map) are not built for
FreeBSD.
Solaris
=======
In Solaris, the utilities can be built with "make -f Makefile.solaris".
This will build a shared object (i.e. libsgutils.so and friends) that
the utilities depend on. To install use "make -f Makefile.solaris install".
These makes depend on gcc and libtool. To build without reliance on a shared
library (and thus libtool) use "make -f no_lib/Makefile.solaris" (or
execute the "make_no_lib_solaris.sh" script which does the same thing).
Utilities that are linux specific (e.g. sg_map) are not built for
Solaris.
Tru64 (OSF)
===========
In Tru64, the utilities can be built with "make -f Makefile.osf1".
This will build a shared object (i.e. libsgutils.so and friends) that
the utilities depend on. To install use "make -f Makefile.osf1 install".
These makes depend on libtool. To build without reliance on a shared
library (and thus libtool) use "make -f no_lib/Makefile.osf1" (or
execute the "make_no_lib_osf1.sh" script which does the same thing).
Utilities that are linux specific (e.g. sg_map) are not built for
Tru64.
Windows
=======
In Windows only the Windows NT, 2000, 2003 and XP operating systems (and
their variants) are currently supported. The various device names that the
sg3_utils utilities will accept in Windows can be seen by running the
sg_scan utility (and perhaps looking at its man page (i.e. sg_scan.8 or
sg_scan.8w)).
The source tarball can be built in a cygwin or MinGW environment on Windows.
For cygwin see http://www.cygwin.com for more information. Various extras
such as 'gcc' (the GNU C compiler) and 'make' need to be loaded as they are
not in the minimal cygwin default distribution. The build command
is "make -f Makefile.win32" and to install (for a cygwin environment)
use "make -f Makefile.win32 install". Currently the make doesn't build a
dll (cf shared libraries are built on Linux and FreeBSD) so the executable
files are bigger than they need to be. Once built, the various ".exe"
commands can either be executed in a cygwin shell (typically "bash") or a
DOS shell. If cygwin has not been installed on the target machine then
the "cygwin1.dll" (obtained from http://www.cygwin.com ) is required.
There is also the "Minimalist Gnu for Windows" (MinGW) and its associated
shell (MSYS) that can serve as a build environment for sg3_utils. This
removes the dependence on the proprietary cygwin1.dll at the expense
of some timing features. In a MSYS shell untar the sg3_utils tarball and
in its top level directory use "make -f Makefile.mingw". The executables
will be placed in that directory. They can be executed in a MSYS or "cmd"
shell.
3rd May 2007
Doug Gilbert