我在Linux机器上运行MySQL服务器5.0.67。
我怎么知道用什么configuration选项来编译它?
我对–with-mysqld-ldflags选项感兴趣,以便知道mysql是静态链接的还是dynamic链接的。
您可以使用mysqlbug命令行实用程序查看configuration选项。
在你的shell中键入mysqlbug ,你会看到一个模板电子邮件的错误提交。
在该电子邮件的底部,您可以看到configuration行中包含您的MySQL副本的所有选项。
--with-mysqld-ldflags在默认情况下被忽略,这意味着服务器将被dynamic编译。
http://dev.mysql.com/doc/refman/5.0/en/configure-options.html
它不会正确地得到你所要求的,但你可以检查一个二进制文件是否是静态链接的(如果它是dynamic链接的,链接到哪个库)。
当二进制文件被dynamic链接时,输出结果如下所示:
$ 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代码包名称apt-get source packagename代码包。 然后看看运行构build的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是静态链接?