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
|