解决编译MySQL时出现的一个错误

升级MySQL至5.5.38版本时,编译安装过程中出现“Error: CFI instruction used without previous .cfi_startproc”错误,随后编译了以前可以通过的版本,发现也出现了这个错误,看了下应该是自己在CentOS5下强制升级GCC版本造成的,搜了很多资料,最后找到了一个补丁,但感觉不如自己修改源码方便。

提供如下解决方法:

编辑源码包中include目录下的my_context.h文件,查找以下内容:

#ifdef __WIN__
#define MY_CONTEXT_USE_WIN32_FIBERS 1
#elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__x86_64__) && !defined(__ILP32__)
#define MY_CONTEXT_USE_X86_64_GCC_ASM
#elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__i386__)
#define MY_CONTEXT_USE_I386_GCC_ASM
#elif defined(HAVE_UCONTEXT)
#define MY_CONTEXT_USE_UCONTEXT
#else
#define MY_CONTEXT_DISABLE
#endif

将其替换为

#define MY_CONTEXT_DISABLE

重新编译即可,这个问题不折腾服务器的话一般不会遇到。