У меня есть сервер MySQL 5.0.67, работающий на машине Linux.
Как я могу узнать, какие параметры конфигурации использовались для его компиляции?
Меня интересует вариант --with-mysqld-ldflags чтобы узнать, был ли mysql связан статически или динамически.
Вы можете увидеть параметры конфигурации, используя mysqlbug
утилита командной строки.
В вашем типе оболочки mysqlbug
и вы увидите шаблон электронного письма с сообщением об ошибке.
В конце этого письма вы можете увидеть строку конфигурации со всеми параметрами, с которыми была скомпилирована ваша копия MySQL.
В --with-mysqld-ldflags
по умолчанию опущен, и это означает, что сервер будет компилироваться динамически.
http://dev.mysql.com/doc/refman/5.0/en/configure-options.html
Он не даст вам именно то, что вы просили, но вы можете проверить, связан ли двоичный файл статически или нет (и, если он динамически связан, с какими библиотеками он связан) с помощью ldd
.
Когда двоичный файл динамически связан, результат выглядит примерно так:
$ ldd test-dyn
linux-vdso.so.1 => (0x00007fffce7fe000)
libc.so.6 => /lib64/libc.so.6 (0x000000391f000000)
/lib64/ld-linux-x86-64.so.2 (0x000000391ec00000)
... и в статически связанном двоичном файле, например:
$ ldd test-stat
not a dynamic executable
Какая версия Linux? Подробности будут в исходном пакете.
Для Debian / Ubuntu вы можете получить исходный код с помощью apt-get source packagename
. Затем посмотрите сценарий debian / rules, запускающий сборку.
Когда я запускаю ldd, я получаю следующее:
root@hostname3 [~]# ldd /usr/sbin/mysqld linux-gate.so.1 => (0x00139000) librt.so.1 => /lib/librt.so.1 (0x00ba2000) libdl.so.2 => /lib/libdl.so.2 (0x00ae3000) libpthread.so.0 => /lib/libpthread.so.0 (0x00b12000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x00bad000) libnsl.so.1 => /lib/libnsl.so.1 (0x00be1000) libm.so.6 => /lib/libm.so.6 (0x00ae9000) libc.so.6 => /lib/libc.so.6 (0x0099d000) /lib/ld-linux.so.2 (0x0097f000)
Означает ли это, что mysqld связан статически?