升级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
重新编译即可,这个问题不折腾服务器的话一般不会遇到。