[getdns-api] Creating programs outside the src/example hierarchy
Paul Hoffman
paul.hoffman at vpnc.org
Fri May 23 03:32:37 CEST 2014
Greetings again. I'm not sure why I am having the following problem. I need to be creating standalone programs without being in src/example, and I'm clearly having some linking problem. This is running under Xubuntu 1404. I prepare the box with:
sudo apt-get install libevent-dev libidn11-dev libldns-dev libunbound-dev unbound-anchor
wget -O getdns-main.tgz https://github.com/getdnsapi/getdns/archive/v0.1.1.tar.gz
cd ~
tar -xzf getdns-main.tgz && cd ~/getdns-0.1.1/
./configure --with-libevent && make && sudo make install
sudo mkdir /etc/unbound
sudo unbound-anchor -a "/etc/unbound/getdns-root.key"
All that runs fine.
cd ~ && mkdir foo && cd foo
cp ~/getdns-0.1.1/src/example/example-simple-answers.c .
cp ~/getdns-0.1.1/src/example/getdns_libevent.h .
cp ~/getdns-0.1.1/libtool .
gcc works fine:
gcc -g -O2 -D_XOPEN_SOURCE=501 -Wall -I. -I/usr/local/include -std=c99 -c example-simple-answers.c -o example-simple-answers.o
libtool reports no errors:
./libtool --tag=CC --mode=link gcc -g -O2 -D_XOPEN_SOURCE=501 -Wall -I. -I/usr/local/include -std=c99 -L/usr/local/lib -lgetdns -lgetdns_ext_event -lunbound -lidn -lldns -o example-simple-answers example-simple-answers.o
libtool: link: gcc -g -O2 -D_XOPEN_SOURCE=501 -Wall -I. -I/usr/local/include -std=c99 -o example-simple-answers example-simple-answers.o -L/usr/local/lib /usr/local/lib/libgetdns_ext_event.so /usr/local/lib/libgetdns.so -levent_core -lunbound -lidn -lldns
However:
# ./example-simple-answers
./example-simple-answers: error while loading shared libraries: libgetdns_ext_event-0.1.1.so.0: cannot open shared object file: No such file or directory
/usr/local/lib seems to have all the right stuff:
# dir /usr/local/lib
total 1204
drwxr-xr-x 4 root root 4096 May 22 18:03 .
drwxr-xr-x 10 root root 4096 Apr 16 11:26 ..
lrwxrwxrwx 1 root root 24 May 22 18:03 libgetdns-0.1.1.so.0 -> libgetdns-0.1.1.so.0.0.0
-rwxr-xr-x 1 root root 400495 May 22 18:03 libgetdns-0.1.1.so.0.0.0
-rw-r--r-- 1 root root 761534 May 22 18:03 libgetdns.a
lrwxrwxrwx 1 root root 34 May 22 18:03 libgetdns_ext_event-0.1.1.so.0 -> libgetdns_ext_event-0.1.1.so.0.0.0
-rwxr-xr-x 1 root root 23194 May 22 18:03 libgetdns_ext_event-0.1.1.so.0.0.0
-rw-r--r-- 1 root root 20388 May 22 18:03 libgetdns_ext_event.a
-rw-r--r-- 1 root root 1083 May 22 18:03 libgetdns_ext_event.la
lrwxrwxrwx 1 root root 34 May 22 18:03 libgetdns_ext_event.so -> libgetdns_ext_event-0.1.1.so.0.0.0
-rw-r--r-- 1 root root 972 May 22 18:03 libgetdns.la
lrwxrwxrwx 1 root root 24 May 22 18:03 libgetdns.so -> libgetdns-0.1.1.so.0.0.0
drwxrwsr-x 4 root staff 4096 Apr 16 11:29 python2.7
drwxrwsr-x 3 root staff 4096 Apr 16 11:26 python3.4
I'm fearing that the "-L. -L.. -L$(srcdir)/../" in the Makefile in src/example is required, and that libgetdns_ext_event.so is actually being found in src/, not /usr/local/lib. If that's the case, what recipe do I need for my call to libtool to make me able to create programs without being in src/example?
--Paul Hoffman
_______________________________________________
getdns-api mailing list
getdns-api at vpnc.org
More information about the spec
mailing list