Rpms shipped with Red Hat Enterprise Linux provides stripped binaries. A separate debuginfo package is provided with all debugging information. Debuginfo rpms for Red Hat Enterprise Linux could be found in following url.
http://people.redhat.com/anderson/debuginfo.html
'file' command could tell if a binary is stripped or not.
# file /usr/bin/python
/usr/bin/python: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), stripped
Some times a non stripped binary will be useful for profiling and debugging.
Below steps could be followed to create an rpm package which provides a non stripped binary. Following is an example of building a python rpm package with non stripped binary.
1. Download the source rpm for the package from rhn.redhat.com.
2. Install the source rpm in the system with following command.
# rpm -ivh python-2.3.4-14.2.src.rpm
3. Edit /etc/rpm/macros and add following line.
%debug_package %{nil}
4. Build the rpm using rpmbuild command.
# rpmbuild -bb /usr/src/redhat/SPECS/python.spec
'-bb' option is given so that a binary package is only created. '-ba' option could build binary and source packages
Binary package will be created under /usr/src/redhat/RPMS/x86_64/
5. Now remove the current rpm with stripped binary and install the new binary rpm package win non stripped binary.
# rpm -e python --nodeps
# rpm -ivh /usr/src/redhat/RPMS/x86_64/python-2.3.4-14.2.x86_64.rpm
Preparing... ########################################### [100%]
1:python ########################################### [100%]
# file /usr/bin/python
/usr/bin/python: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), not stripped
6. For listing symbols from the non stripped binary 'nm' command could be used.
# nm /usr/bin/python
I used RHEL in this example because of familiarity. This should work with almost all rpm based operating system flavors.
No comments:
Post a Comment