Ключевые слова:mysql, gcc, security, patch, (найти похожие документы)
From: [IOR]esult.Luc!f3r <bender at cdev dot ru>
Newsgroups: email
Date: Mon, 5 Dec 2006 14:31:37 +0000 (UTC)
Subject: Сборка MySQL с патчами pgcc
Скачиваем нужные исходники:
# wget http://www.goof.com/pcg/data/source/gcc-2.95.2.1-pgcc-2.95.2.1.diff.gz
# cd ..
# wget ftp://linuxforum.net/ftp.gcc.gnu.org/gcc/gcc-2.95.2.1.tar.gz
# tar xvpzf gcc-2.95.2.1.tar.gz
# cd gcc-2.95.2.1
# mv ../../gcc-pgcc-patch/gcc-2.95.2.1-pgcc-2.95.2.1.diff.gz ./
Применяем патч pgcc:
# gunzip <gcc-2.95.2.1-pgcc-2.95.2.1.diff.gz |patch -p1 -E
# find . -name "*.rej" -print
# find . -name "*.orig" | xargs rm
# find . -name "*.orig" -print
Для компиляции pgcc потребуются следующие вещи:
gperf
autoconf
bison
flex
Поставьте их yum'ом, apt-get'ом или любым удобным для вас способом.
Создадим отдельную директорию и будем конфигурить оттуда (как завещали отцы):
# cd ..
# mkdir objdir
# cd objdir/
# ../gcc-2.95.2.1/configure --enable-languages=c,c++ --disable-threads
# make all-gcc install
Note: --disable-threads употреблен здесь по той причине что pgcc не требуется библиотека libstdc++
Установка успешно завершена.
Установка MySQL.
Скачиваем/распаковываем сорсы нового MySQL'я( я использовал 4.1.22):
# cd ../../../
# mkdir mysql
# cd mysql/
# wget http://mysql.org/get/Downloads/MySQL-4.1/mysql-4.1.22.tar.gz/from/http: //mysql.mix.su/
# tar xvpzf mysql-4.1.22.tar.gz
# cd mysql-4.1.22
Кофигурим с CFLAGS:
# CFLAGS="-O3 -fomit-frame-pointer" \
CXX=gcc \
CXXFLAGS="-O3 -fomit-frame-pointer \
-felide-constructors -fno-exceptions -fno-rtti" \
./configure --enable-assembler --disable-shared \
--with-mysqld-ldflags="-all-static" --with-client-ldflags="-all-static" \
--with-unix-socket-path=/tmp/mysql.sock --prefix=/usr
Проверяем установились ли CXX и CXXFLAGS так, как нам нужно:
# cat Makefile | grep CXX
Должно быть CXX = gcc, в противном случае правим руками Makefile.
# make
Если make завершился с ошибкой о том, что он не может найти libgdc++, значит CXX не установлен в "gcc", либо gcc компилировался с --enable-threads.
# make install
Надеюсь это Вам помогло :)