compiling for shared library
sam lee
skynare@gmail.com
Sat Jul 11 14:02:00 GMT 2009
Hi.
I am trying to create shared library of RtAudio
(http://www.music.mcgill.ca/~gary/rtaudio/).
This is how I compile:
$ g++ -g -Wall -Iinclude -fPIC -D__RTAUDIO_DEBUG__ -DHAVE_GETTIMEOFDAY
-D__LINUX_ALSA__ -c RtAudio.cpp -o RtAudio.o
$ ar ruv librtaudio.a RtAudio.o
$ ranlib librtaudio.a
$ g++ -shared -Wl,-soname,librtaudio.so RtAudio.o -o librtaudio.so
RtAudio.o is 570Kbytes. librtaudio.a is 586KBytes and librtaudio.so is
340KBytes.
Now, I try a demo program that plays saw wave.
$ g++ test.cpp -lrtaudio -lasound -o a.out
$ ldd a.out
....
librtaudio.so => /usr/lib/librtaudio.so (0x00007fdb1de33000)
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007fdb1db4e000)
...
$ ./a.out
No sound is played.
So, I reverse -l order just in case.
$ g++ test.cpp -lasound -lrtaudio -o a.out
$ ldd a.out
...
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f22e0452000)
librtaudio.so => /usr/lib/librtaudio.so (0x00007f22e0231000)
....
$ ./a.out
No sound is played.
Linking with archive (.a)
$ g++ test.cpp -lasound -l:librtaudio.a
$ ldd a.out
...
libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f3bbce68000)
....
$ ./a.out
Plays sound!
Obviously I am building shared library (librtaudio.so) wrong. Or,
installing it wrong.
Did I miss something?
Thank you.
Sam.
More information about the Gcc-help
mailing list