howto not strip .so on install

Neal Becker ndbecker2 at gmail.com
Wed Jul 27 17:34:19 UTC 2011


Jerry James wrote:

> On Wed, Jul 27, 2011 at 9:48 AM, Neal Becker <ndbecker2 at gmail.com> wrote:
>> Trying to help packaging dmtcp.  There are 2 shared libs installed.  They are
>> stripped by the rpm install, and then fail when attempting to dlopen them (or
>> 1 of them).
> 
> Fail how?  What's the error?
1. Get srpm here 
http://www.ccs.neu.edu/home/kapil/fedora_rpms/dmtcp-1.2.3+svn1214-1.1.src.rpm

2. rpmbuild -ba dmtcp.spec

3. sudo rpm -U *dmtcp* (install all the rpms you just built)

4. Test:

dmtcp_checkpoint python
DMTCP/MTCP  Copyright (C) 2006-2010  Jason Ansel, Michael Rieker,
                                       Kapil Arya, and Gene Cooperman
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see COPYING file for details.
(Use flag "-q" to hide this message.)

dmtcp_coordinator starting...
    Port: 7779
    Checkpoint Interval: disabled (checkpoint manually instead)
    Exit on last client: 1
Backgrounding...
[18446] NOTE at connectionmanager.cpp:623 in handlePreExistingFd; REASON='found 
pre-existing socket... will not be restored'
     fd = 10
     device = pipe:[19269]
[18446] ERROR at mtcpinterface.cpp:91 in find_and_open_mtcp_so; 
REASON='JASSERT(handle != NULL) failed'
     mtcpso = /usr/lib64/dmtcp/libmtcp.so
     dlerror() = /usr/lib64/dmtcp/libmtcp.so: undefined symbol: 
mtcp_restore_start
Message: failed to load libmtcp.so
python (18446): Terminating...

5. Goto the rpmbuild/BUILD/dmtcpxxx directory, and reinstall the shared libs

sudo make install

6. Now it does not fail.

7. Verify that the only difference is replacing the shared libs installed via 
rpm vs. the same shared libs installed without rpm.

So something that rpm does to the shared libs (in /usr/lib64/dmtcp) is breaking 
things.  The only thing I can think of is strip.

8. Notice the error:

     dlerror() = /usr/lib64/dmtcp/libmtcp.so: undefined symbol: 
mtcp_restore_start

But it is defined!
nm -D /usr/lib64/dmtcp/libmtcp.so | grep mtcp_restore_start
000000000000911c T mtcp_restore_start

That was the non-working version of libmtcp.so, which has been stripped.





More information about the devel mailing list