当前位置:编程学习 > 网站相关 >>

x264和FFMPEG 编译后遇到的一些问题:UINT64_C,

吭吃坑吃的编译安装完ffmpeg 0.75,在centos5.9上后,遇到了一些问题,都是十分常见的问题,希望对大家有用。

问题一

/usr/local/include/libavutil/common.h: In function ‘int32_t av_clipl_int32_c(int64_t)’:
/usr/local/include/libavutil/common.h:170: error: ‘UINT64_C’ was not declared in this scope


这个问题可以这么解决

编辑文件  gedit /usr/local/include/libavutil/common.h


添加如下代码可以解决。

//add by bg2bkk
#ifndef UINT64_C
#define UINT64_C(value) __CONCAT(value, ULL)
#endif
//add by bg2bkk


问题二

./ffmpeg_test: error while loading shared libraries: libavcodec.so.52: cannot open shared object file: No such file or directory


这个问题的原因在于没有把ffmpeg的lib放到ld.conf里,参考链接:http://forum.ivorde.ro/ffmpeg-error-while-loading-shared-libraries-libavdevice-so-52-cannot-open-shared-object-file-no-t129.html

这个thread不错,有很多有用的命令:

ldd `which ffmpeg` 查看ffmpeg的库是否可以找到


这时一般会打印为:


linux-gate.so.1 =>  (0x00f90000)
libavdevice.so.52 => not found
libavfilter.so.1 => not found
libavformat.so.52 => not found
libavcodec.so.52 => not found
libpostproc.so.51 => not found
libswscale.so.0 => not found
libavutil.so.50 => not found
libpthread.so.0 => /lib/libpthread.so.0 (0x00821000)
libm.so.6 => /lib/libm.so.6 (0x007da000)
libc.so.6 => /lib/libc.so.6 (0x0067b000)
/lib/ld-linux.so.2 (0x0065c000)


而命令find /usr/local/lib/ | grep -E "libavdevice.so.52|libavfilter.so.1|libavcodec.so.52|libavcore.so.0"

通常会打印输出

/usr/local/lib/libavdevice.so.52.5.0
/usr/local/lib/libavfilter.so.1
/usr/local/lib/libavdevice.so.52
/usr/local/lib/libavfilter.so.1.80.0
/usr/local/lib/libavcodec.so.52.123.0
/usr/local/lib/libavcodec.so.52

说明你有这些库,只是没有识别。当然,路径/usr/local/lib 和/usr/local/include主要是因为ffmpeg的安装前缀是/usr/lcoal,好像用户安装linux的软件默认都是这里。

修改文件sudo vim /etc/ld.so.conf

在文件里添加

/usr/local/lib

这句

然后保存退出。

sudo ldconfig


这样就可以找到这些库了。

问题三

./ffmpeg_test: error while loading shared libraries: /usr/local/lib/libswscale.so.0: cannot restore segment prot after reloc: Permission denied


 

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,