我在 Linux 机器上运行着 MySQL 服务器 5.0.67。
我如何知道编译它时使用了哪些配置选项?
我对这个选项感兴趣--with-mysqld-ldflags为了知道 mysql 是静态链接还是动态链接。
答案1
mysqlbug
您可以使用命令行实用程序查看配置选项。
在您的 shell 类型中mysqlbug
,您将看到一个用于提交 bug 的模板电子邮件。
在该电子邮件的底部,您可以看到 configure 行,其中包含编译 MySQL 副本时使用的所有选项。
默认情况下省略--with-mysqld-ldflags
,这意味着服务器将被动态编译。
http://dev.mysql.com/doc/refman/5.0/en/configure-options.html
答案2
它不会让您准确地得到您所要求的东西,但您可以检查二进制文件是否是静态链接的(如果是动态链接的,那么它链接到哪些库)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
答案3
哪个版本的 Linux?详细信息将在源包中提供。
对于基于 Debian/Ubuntu 的系统,您可以使用 获取源包apt-get source packagename
。然后查看运行构建的 debian/rules 脚本。
答案4
当我运行 ldd 时,我得到了这个:
root@主机名3 [~]# 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 是静态链接的??