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