aboutsummaryrefslogtreecommitdiff
path: root/INSTALL
blob: 18fd80f4b1d9880b58ef9c2ed9a809c2e86b8b6d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Unless otherwise noted, these install instructions are for the
Linux operating system.

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 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.


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.


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.


29th June 2006