LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1583|回复: 4

编译VLC 错误

[复制链接]
发表于 2005-1-6 10:52:56 | 显示全部楼层 |阅读模式
编译播放软件VLC 出现如下错误,


g++ -Wsign-compare -Wsign-compare -Wall -pipe -o vlc src/vlc-vlc.o lib/libvlc.a
./modules/misc/memcpy/libmemcpymmx.a ./modules/video_chroma/libi420_rgb_mmx.a ./
modules/video_chroma/libi422_yuy2_mmx.a ./modules/video_chroma/libi420_ymga_mmx.
a ./modules/video_chroma/libi420_yuy2_mmx.a ./modules/misc/memcpy/libmemcpymmxex
t.a ./modules/misc/memcpy/libmemcpy3dn.a ./modules/demux/libmkv.a ./modules/code
c/ffmpeg/libffmpeg.a -L/usr/local/lib  -lrt -lpthread -ldl -lm -lz -lmatroska -le
bml -lavcodec -lm

./modules/codec/ffmpeg/libffmpeg.a(libffmpeg_a-video_filter.o)(.text+0x16b): In
function `OpenFilter__ffmpeg':
: undefined reference to `avpicture_alloc'

./modules/codec/ffmpeg/libffmpeg.a(libffmpeg_a-video_filter.o)(.text+0x9a5): In
function `CloseFilter__ffmpeg':
: undefined reference to `avpicture_free'

./modules/codec/ffmpeg/libffmpeg.a(libffmpeg_a-chroma.o)(.text+0x17d): In functi
on `OpenChroma__ffmpeg':
: undefined reference to `avpicture_alloc'

./modules/codec/ffmpeg/libffmpeg.a(libffmpeg_a-chroma.o)(.text+0x4dd): In functi
on `CloseChroma__ffmpeg':
: undefined reference to `avpicture_free'

collect2: ld returned 1 exit status
make[2]: *** [vlc] Error 1
make[2]: Leaving directory `/home/hxr/vlc-0.8.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/hxr/vlc-0.8.1'
make: *** [all] Error 2

请问未 undefined reference to `avpicture_alloc' 是在 -L/usr/local/lib中吗?
我看了我地/usr/local/lib目录中什么都没有,那我该如何修改路径呢?

我用make -L/usr/lib 提示错误.
 楼主| 发表于 2005-1-6 11:42:57 | 显示全部楼层
看了下面的精华贴:
Linux下C语言编程基础知识
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=1005

3.程序库的链接
试着编译下面这个程序

/* temp.c */
#include

int main(int argc,char **argv)
{
double value;
printf("Valuef\n",value);
}

这个程序相当简单,但是当我们用 gcc -o temp temp.c 编译时会出现下面所示的错误.
/tmp/cc33Kydu.o: In function `main:
/tmp/cc33Kydu.o(.text+0xe): undefined reference to `log
collect2: ld returned 1 exit status

出现这个错误是因为编译器找不到log的具体实现.虽然我们包括了正确的头文件,但是我们在编译的时候还是要连接确定的库.在Linux下,为了使用数学函数,我们必须和数学库连接,为此我们要加入 -lm 选项. gcc -o temp temp.c -lm这样才能够正确的编译.也许有人要问,前面我们用printf函数的时候怎么没有连接库呢?是这样的,对于一些常用的函数的实现,gcc编译器会自动去连接一些常用库,这样我们就没有必要自己去指定了. 有时候我们在编译程序的时候还要指定库的路径,这个时候我们要用到编译器的 -L选项指定路径.比如说我们有一个库在 /home/hoyt/mylib下,这样我们编译的时候还要加上 -L/home/hoyt/mylib.对于一些标准库来说,我们没有必要指出路径.只要它们在起缺省库的路径下就可以了.系统的缺省库的路径/lib /usr/lib /usr/local/lib 在这三个路径下面的库,我们可以不指定路径.
 楼主| 发表于 2005-1-6 11:46:51 | 显示全部楼层
错误应该是
1.包含了 函数"avpicture_alloc"的包没装上.
2.装上了但没有正确地找到该函数所在库地路径.
 楼主| 发表于 2005-1-6 14:24:41 | 显示全部楼层
解决办法:
1.将undefined reference to `avpicture_alloc'的函数注释掉,
  编译能通过.
2.或者找新的包含该函数的PACKAGE 更新.

我使用(1)的方法MAKE 通过
发表于 2005-1-6 22:22:09 | 显示全部楼层
呵呵,自问自答,强!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表