[FFmpeg-devel] library linking question

Chau Pham chaupv79 at hotmail.com
Tue Jul 10 02:37:39 CEST 2012


Hi Guys, 

I compiled ffmpeg-0.11.1 on linux, I want to use its library and header in a small specific c program to use av_register_all() in ffmpeg library,
I am having trouble in linking ffmpeg.

0) I use Centos 5.7 for a linux machine.
1) I have compiled ffmpeg-0.11.1 in /root/ffmpeg-source/working/ffmpeg
2) I make a test.c in /root/ffmpeg-source/working/test.c as below:

#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>

#include <stdio.h>
int main()
{
        av_register_all();
        //printf("Test FFmpeg library! \n");
        return 1;
}

3) I make a Makefile in /root/ffmpeg-source/working/ as below:

PROGRAM = test
INCLUDEDIRS = ffmpeg/

LIBS = -L$(root/ffmpeg-source/working/ffmpeg/libavformat/)libavformat.a -L$(root/ffmpeg-source/working/ffmpeg/libavcodec/)libavcodec.a

CXXSOURCES = test.c       # list of source files
CXXOBJECTS = $(CXXSOURCES:.c=.o)  # expands to list of object files
HEADERFLAGS = -I$(INCLUDEDIRS)
CXX = gcc

LDFLAGS = $(LIBS)

all: $(PROGRAM)

$(PROGRAM): $(CXXOBJECTS)
        $(CXX) -o $@ $(CXXOBJECTS) $(LDFLAGS) -static

test.o: test.c
        $(CXX) $(HEADERFLAGS) -c -o test.o test.c

clean:
        $(RM) -f $(CXXOBJECTS) $(PROGRAM)


=> When I compile:

[root at FFMPEG working]# make -f Makefile
gcc -o test test.o   -Llibavformat.a -Llibavcodec.a -static
test.o: In function `main':
test.c:(.text+0x12): undefined reference to `av_register_all'
collect2: ld returned 1 exit status
make: *** [test] Error 1


====
I bet you guys will have a laugh when read to here, because you think that I am a 'chicken' on this master :)) , it's Ok, 
please help me if you find out the reason why the error occurs. (I think, it's on library linking problem)

Do you guy have experience on that? could you show me a hint how to do it?

Look forward to hearing from you soon,

Thank You,
Chau Pham
 		 	   		  


More information about the ffmpeg-devel mailing list