在某些Centos上编译MariaDB 5.5.35在make的时候可能会出现以下问题:
root@wsi:/root/src/mariadb-5.5.35# make
.......
[ 8%] Building C object mysys/CMakeFiles/mysys.dir/my_context.c.o
cd /root/src/mariadb-5.5.35/mysys && /usr/bin/gcc -DHAVE_CONFIG_H -Wall -march=i686 -fPIC -O3 -DNDEBUG -DDBUG_OFF -I/root/src/mariadb-5.5.35/include -I/root/src/mariadb-5.5.35
/mysys -o CMakeFiles/mysys.dir/my_context.c.o -c /root/src/mariadb-5.5.35/mysys/my_context.c /root/src/mariadb-5.5.35/mysys/my_context.c: Assembler messages:
/root/src/mariadb-5.5.35/mysys/my_context.c:457: Error: CFI instruction used without previous .cfi_startproc
make[2]: *** [mysys/CMakeFiles/mysys.dir/my_context.c.o] Error 1
......
使用以下pactch可以解决编译失败的问题.
--- mariadb-5.5.35/include/my_context.h.org 2014-02-02 21:59:28.724573324 +0800
+++ mariadb-5.5.35/include/my_context.h 2014-02-02 21:59:46.550625376 +0800
@@ -25,17 +25,7 @@
(This particular implementation uses Posix ucontext swapcontext().)
*/
-#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
#ifdef MY_CONTEXT_USE_WIN32_FIBERS
struct my_context {
这个解决方法具体应该怎么使用?求博主指点
把这个patch的文本复制到MariaDB的上一层目录,保存为1.patch,然后再MariaDB源代码目录里执行patch -p1 < ../1.patch