Bug#401600: constructor/de-constructor never found for all testprograms build against boinc-dev

Steffen Moeller steffen_moeller at gmx.de
Tue Dec 5 11:30:49 CET 2006


On Monday 04 December 2006 22:35, Folkert van Heusden wrote:
> > > Nothing builds with this library.
> >
> > That's not true. The boinc-app-seti package builds with this package
> > (therefore I'm downgrading the severity of this bug). Maybe you should
> > have a look at boinc-app-seti's makefiles to figure out how to use BOINC
> > libraries and headers.
>
> I.m.h.o. if just doing something like -lboinc (or whatever), it should
> be in the (at least Debian-) documentation of that library.
>
> If a library is only usable for 1 application, it doesn't make sense to
> have a seperate -dev library.

Hi, I think that Frank has a valid point here and you, Folkert, have done a good job in minimising the issue. It should not be overly difficult, but somebody should do it, that far we are in sync, to describe the dependencies independently from the Makefile.

This are the _shared_ libraries used by Debian's seti at home application:
pc02:/nfshome/moeller # ldd /usr/lib/boinc-app-seti/setiathome_enhanced
        linux-gate.so.1 =>  (0xb7f93000)
        libssl.so.0.9.8 => /usr/lib/i686/cmov/libssl.so.0.9.8 (0xb7f3e000)
        libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e04000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7dff000)
        libfftw3f.so.3 => /usr/lib/libfftw3f.so.3 (0xb7d21000)
        libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7d0b000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7d02000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7cee000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7c09000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7bf5000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7bd0000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7bc5000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7a91000)
        /lib/ld-linux.so.2 (0xb7f94000)

But no prime candidate jumps to mind, here, so I presumed something static.

moeller at pc02:~$ grep -r RPC_CLIENT /usr/include/
/usr/include/BOINC/lib/gui_rpc_client.h:class RPC_CLIENT {
/usr/include/BOINC/lib/gui_rpc_client.h:    RPC_CLIENT();
/usr/include/BOINC/lib/gui_rpc_client.h:    ~RPC_CLIENT();
/usr/include/BOINC/lib/gui_rpc_client.h:    RPC_CLIENT* rpc_client;
/usr/include/BOINC/lib/gui_rpc_client.h:    RPC(RPC_CLIENT*);

(Sidenote: I installed the boinc-dev package for you and your report only :o) )

Ok, we found the culprit. The remaining question is what boinc library is reponsible for the implementation of the constructor. This is investigated by a one-line script like the following:

for i in `dpkg -L boinc-dev | grep libb`; do echo $i; nm $i | grep -i RPC; done

using this information and your example code
moeller at pc02:~/NO_INB_BACKUP/src$ cat > b.C && g++ -I /usr/include/BOINC/ b.C -o b -L /usr/share/boinc-dev/lib -lboinc
> #include <BOINC/lib/gui_rpc_client.h>
> int main(int argc, char *argv[])
> {
>         RPC_CLIENT      test;
>         return 0;
> }
> moeller at pc02:~/NO_INB_BACKUP/src$ 

compiles just happily.

Folkert, since I know Frank to be very busy with his daytime activitities and to my knowledge he is not actively programming boinc applications himself these days, please consider to write a little tutorial for Debian (and upstream) based on your experiences.

Many greetings

Steffen

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.alioth.debian.org/pipermail/pkg-boinc-devel/attachments/20061205/776fd488/attachment.htm


More information about the pkg-boinc-devel mailing list