This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: using static libraries


Hi Kristoff,

put "-lpthread -lsndfile -lrt" *after* "wav2ambe.c"

Greetings,

J.

--- On Sat, 11/27/10, Kristoff Bonne <kristoff.bonne@skypro.be> wrote:

> From: Kristoff Bonne <kristoff.bonne@skypro.be>
> Subject: using static libraries
> To: gcc-help@gcc.gnu.org
> Date: Saturday, November 27, 2010, 8:13 PM
> Hi,
> 
> 
> I have a question about using static libraries and sofar I
> have not found it on the internet-archive.
> 
> 
> I'm working on a software-package to create
> voice-announcement on D-STAR repeaters (radio-amateur
> digital voice repeaters).
> 
> I use three external libraries: libsndfile (read the
> wav-file), pthread (posix threads) and rt (for timed
> interrupts).
> 
> 
> As the repeaters by default run a version of CentOS where
> "libsndfile" is not installed, nor present in the default
> repostitory, it needs to be installed from source.
> So far, so good.
> 
> However, there are a number of people who also have other
> software running on these boxex, including asterisk, who
> also uses the libsndfile. (be it, only the run-time
> libraries, not the include-files).
> 
> So, to be sure not to create any confict with these
> programs and these versions of the libsndfile-library, I
> want to include binary versions of the programs in my
> package, using statically linking (read: no external
> libraries needed, so no change of conflict).
> 
> 
> However, when I try to compile my programs using the
> "-static" option, it looks like the linker cannot reference
> to the external functions:
> 
> $ gcc -static -L /usr/lib/ -o wav2ambe -lpthread -lsndfile
> -lrt wav2ambe.c
> /tmp/ccAUZGl5.o: In function `main':
> wav2ambe.c:(.text+0x11ff): undefined reference to
> `sf_open'
> wav2ambe.c:(.text+0x1593): undefined reference to
> `pthread_create'
> wav2ambe.c:(.text+0x1666): undefined reference to
> `timer_create'
> wav2ambe.c:(.text+0x16f8): undefined reference to
> `timer_settime'
> wav2ambe.c:(.text+0x1782): undefined reference to
> `sf_read_short'
> wav2ambe.c:(.text+0x18ff): undefined reference to
> `timer_settime'
> collect2: ld returned 1 exit status
> 
> The strange thing is that, when I run "strace -f", I do see
> that the .a files (/usr/lib/libpthread.a,
> /usr/lib/libsndfile.a and /usr/lib/librt.a) are read!!!
> 
> So am I doing something wrong here?
> 
> 
> 
> The program-code can be found here:
> http://villazeebries.krbonne.net/dstar/voice-announce/
> 
> The blog about the program is here:
> http://villazeebries.krbonne.net/hamstuff/
> 
> 
> Any info greatly appriciated!
> 
> Cheerio!
> Kr. Bonne
> 
> 


      


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]