Mingw下gcc4.5.0编译新版ffmpeg的问题
2010-08-12 18:09
417 查看
下载了今年8月份的ffmpeg的源码后,在Mingw下编译。ffmpeg警告gcc版本过老,造成栈不对齐,可能存在问题。建议用gcc4.2以上版本。于是下载了最近的稳定版gcc4.5.0进行编译。然而编译不过,出现错误:strcasecmp声明不确切。
在头文件中定义(libavutil/avstring.h) #define strcasecmp stricmp
问题依旧。
于是自己实现了两个函数。
static inline char __hack_charget( char c )
{
if(c >= 'a' && c <= 'z')
c += 'A' - 'a';
return c;
}
static inline int hack_strcasecmp( char const *a, char const *b )
{
char ac, bc;
int r;
for(;;) {
ac = __hack_charget(*a++);
bc = __hack_charget(*b++);
r = (int)ac - (int)bc;
if(r)
return r;
if(!ac)
return 0;
}
}
static inline int hack_strncasecmp( char const *a, char const *b, int n )
{
char ac, bc;
int r, i;
for(i = 0; i < n; ++i) {
ac = __hack_charget(*a++);
bc = __hack_charget(*b++);
r = (int)ac - (int)bc;
if(r)
return r;
if(!ac)
return 0;
}
return 0;
}
#define strcasecmp hack_strcasecmp
#define strncasecmp hack_strncasecmp
将这个文件include进avstring.h和metadata.h中,问题解决。测试后,结果正确。
我google过这个问题,有些老外卡在这里,正在四处询问。
总结:
即使是公布的gcc和ffmpeg也会存在这种比较低级的问题,毕竟是有源代码,见到问题解决问题就行了。
在头文件中定义(libavutil/avstring.h) #define strcasecmp stricmp
问题依旧。
于是自己实现了两个函数。
static inline char __hack_charget( char c )
{
if(c >= 'a' && c <= 'z')
c += 'A' - 'a';
return c;
}
static inline int hack_strcasecmp( char const *a, char const *b )
{
char ac, bc;
int r;
for(;;) {
ac = __hack_charget(*a++);
bc = __hack_charget(*b++);
r = (int)ac - (int)bc;
if(r)
return r;
if(!ac)
return 0;
}
}
static inline int hack_strncasecmp( char const *a, char const *b, int n )
{
char ac, bc;
int r, i;
for(i = 0; i < n; ++i) {
ac = __hack_charget(*a++);
bc = __hack_charget(*b++);
r = (int)ac - (int)bc;
if(r)
return r;
if(!ac)
return 0;
}
return 0;
}
#define strcasecmp hack_strcasecmp
#define strncasecmp hack_strncasecmp
将这个文件include进avstring.h和metadata.h中,问题解决。测试后,结果正确。
我google过这个问题,有些老外卡在这里,正在四处询问。
总结:
即使是公布的gcc和ffmpeg也会存在这种比较低级的问题,毕竟是有源代码,见到问题解决问题就行了。
相关文章推荐
- Windows 系统下使用 MinGW + MSYS + GCC 编译 FFMPEG
- Notepad++ 配置 MinGW(gcc)编译环境配置 以及问题解决
- 使用MinGW 与 MSYS 编译 ffmpeg 的问题说明
- ffmpeg 2.3 mingw下用vs2010/15编译的一些小问题总结
- 在MSYS下用MingW GCC编译libgmp的一个小问题及解决方法
- Windows 系统下使用 MinGW + MSYS + GCC 编译 FFMPEG
- Windows 系统下使用 MinGW + MSYS + GCC 编译 FFMPEG
- 在Ubuntu使用gcc编译的程序无法运行的问题。
- Linux下gcc编译中关于头文件与库文件搜索路径相关问题(二)
- mingw+msys+eclipse编译调试ffmpeg
- 在Ubuntu中编译、安装 gcc4.1.1 过程以及遇到的问题
- ffmpeg编译的静态链接库问题
- 解决 gcc/g++ 编译动态库通过却无法运行的问题
- minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
- cygwin编译ffmpeg移植到android平台问题集锦
- gcc编译遇到到不能编译问题
- iOS: FFmpeg编译和使用问题总结
- 编译ffmpeg问题整理
- 【ffmpeg + VS2010】编译包含libavutil\common.h后出现找不到inttypes.h的问题
- mingw编译ffmpeg(移植到android)