MYSQL源码安装概述

libmysql.a 用于解决window下c语言连接数据库时,mysql_init()等函数找不到的问题。mysql版本是5.7.22!具体制作方法见本人博客 立即下载

 你必须执行的安装MySQL源码分发版的基本命令是:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root  .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
如果从一个源码RPM开始,那么执行如下命令:

shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm
这样你制作一个可以安装的二进制RPM。对于旧版本的RPM,你可能需要替换用rpm替换命令rpmbuild。

注释:该过程不为任何MySQL账户设置密码。

以下是安装MySQL源码分发版的更详细的描述:

1.    为mysqld增加一个登录用户和组:

2.            shell> groupadd mysql
3.            shell> useradd -g mysql mysql
这些命令将增加MySQL组和 MySQL用户。不同版本的Unix中,useradd 和groupadd的语法可能会稍有不同。还可以称为adduser和addgroup。

你可能会将这些用户和组命名为mysql之外的名称。如果是这样,在下面的步骤中替换为相应的名称。

   挑选一个你想解开分发包的目录,进入该目录。

   在当前目录下解包分发版:

           shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
该命令创建mysql-VERSION 目录。

使用GNU tar,则不再需要gunzip。你可以用下面的命令来解包和提取分发:

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
   进入解包分发版的顶级目录:

            shell> cd  mysql-VERSION
请注意目前必须从顶级目录配置和构建MySQL。你不能在其它目录中构建。
.配置发布版并且编译:

.        shell> make
当你运行configure时,你可能想要指定一些选项,运行./configure --help得到一个选项列表。

“典型配置选项”讨论一些很有用的选项。


如果configure失败,你将向MySQL邮件目录发送包含你认为能帮你解决该问题的包含“config.log”中所有行的邮件,也要包括configure的最后几行输出。用mysqlbug脚本邮寄错误报告。
安装分发版:

        shell> make install
如果你想要设置一个选项文件,使用support-files目录中的一个作为模板。例如:

shell> cp support-files/my-medium.cnf /etc/my.cnf
可能你需要用root用户运行这些命令。

如果想要配置为支持InnoDB表,应当编辑/etc/my.cnf文件,去掉innodb_...开始选项行前面的#符,并将选项值改为你想要的。

15.进入安装目录:

16.        shell> cd /usr/local/mysql
17.如果还没有安装的MySQL,必须创建MySQL授权表:

18.        shell> bin/mysql_install_db --user=mysql
如果用root运行命令,应当使用--user选项。选项的值应与你在第一步为运行服务器所创建的登录账户相同。如果用该用户登录来运行命令,可以省略--user选项。

用mysql_install_db创建MySQL授权表后,需要手动重新启动服务器

19.将程序二进制的所有权改为root,数据目录的所有权改为你运行mysqld的用户。如果位于安装目录(/usr/local/mysql)下,命令应为:

20.        shell> chown -R root  .
21.        shell> chown -R mysql var
22.        shell> chgrp -R mysql .
第一个命令将文件的所有属性改为root用户。第二个命令将数据目录的所有属性改为mysql用户。第三个命令将组属性改为mysql组。

23.如果你喜欢在引导机器时自动启动MySQL,你可以拷贝support-files/mysql.server文件到你系统有启动文件的地方。

24.如果安装了DBI和DBD::mysql Perl模块,可以使用bin/mysql_setpermission脚本增加新账户。

在所有东西被安装以后,你应当使用该命令初始化并且测试你的分发版:

shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
如果这个命令提示mysqld daemon ended并马上失败,那么你能在数据目录中的文件“hostname'.err”找到一些信息。

 

 典型配置选项
configure脚本给你一个很大的控制权来控制如何配置MySQL源码分发版。一般使用configure命令行的选项来进行。你也可以用某些环境变量作用于configure。

shell> ./configure --help
如果只编译MySQL客户端库和客户端程序而不是服务器,使用--without-server选项:
shell> ./configure --without-server
如果你没有C++编译器,则不能编译mysql(有一个客户端程序需要C++)。在这种情况下,你可以去掉configure里面测试C++编译器的代码,然后运行带有 --without-server选项的./configure。编译步骤步将仍然尝试构造mysql,但是你可以忽略任何关于“mysql.cc”的警告。(如果make停止,试试make -k告诉它即使出错继续剩下的构造步骤)。

·         如果你想要构建嵌入式MySQL库 (libmysqld.a),你应当使用--with-embedded-server选项。

如果你不想要位于“/usr/local/var”目录下面的日志(log)文件和数据库,使用类似于下列configure命令的一个:
shell>./configure--prefix=/usr/local/mysql
shell>./configure--prefix=/usr/local –
       localstatedir=/usr/local/mysql/data
第一个命令改变安装前缀以便将所有内容安装到“/usr/local/mysql”下面而非 默认的“/usr/local”。第二个命令保留默认安装前缀,但是覆盖了数据库目录默认目录(通常是“/usr/local/var”)并且把它改为/usr/local/mysql/data。编译完MySQL后,可以通过选项文件更改这些选项。

如果你正在使用Unix并且你想要MySQL的套接字位于 默认位置以外的某个地方(通常在目录“/tmp”或“/var/run”,使用象这样的configure的命令:
shell> ./configure/-- with-unix-socket-
path=/usr/local/mysql/tmp/mysql.sock
注意给出的文件名必须是一个绝对路径。你还可以在以后使用MySQL选项文件更改mysql.sock的位置。

如果你想编译静态链接程序(例如,制作二进制分发版、获得更快的速度或与解决与RedHat分发版的一些问题),像这样运行configure:
·                shell>./configure --with-client-ldflags=-all-static/

·                        --with-mysqld-ldflags=-all-static

如果你正在使用gcc并且没有安装libg++或libstdc++,你可以告诉configure使用gcc作为C++编译器:
shell> CC=gcc  CXX=gcc  ./configure
当你使用gcc作为C++编译器用时,它将不试图链接libg++或libstdc++。即使你安装了这些库,这样也很好,因为过去使用MySQL时,它们的部分版本会出现一些奇怪的问题。

下面列出了一些经常使用的编译器和环境变量设定值。

o        gcc 2.7.2:

o                     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
o        egcs 1.0.3a:

o                     CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors /
o                     -fno-exceptions -fno-rtti"
o        gcc 2.95.2:

o                     CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro /
o                     -felide-constructors -fno-exceptions -fno-rtti"
o        pgcc 2.90.29 或更新版:

o                     CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc /
o                     CXXFLAGS="-O3 -mpentiumpro -mstack-align-double /
o                     -felide-constructors -fno- exceptions -fno-rtti"
在大多数情况,在configure行使用前面列出的选项并加入下面的选项,可以得到合理的优化的MySQL二进制:

--prefix=/usr/local/mysql --enable-assembler /
--with-mysqld-ldflags=-all-static
换句话说,对于所有最近的gcc版,整个configure行应为:

CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro /
-felide-constructors -fno- exceptions -fno-rtti" ./ configure /
--prefix=/usr/local/mysql --enable-assembler /
--with-mysqld-ldflags=-all-static
我们在MySQL网址http://www.mysql.com/提供的二进制均已经编译过并进行了优化,对于大多数用户应当比较完善。
其中有一些配置设定值,可以选用来构建更快的二进制,但是只适用高级用户。


如果构造失败并且产生有关编译器或链接器的错误,不能创建共享库“libmysqlclient.so.#”(“#”是一个版本号), 你可以通过为configure指定--disable-shared选项来解决此问题。在这种情况下,configure将不构造一个共享libmysqlclient.so.#库。

默认地,MySQL使用latin1(cp1252)字符集。为了改变 默认设置,使用--with-charset选项:
shell> ./configure -- with-charset=CHARSET
CHARSET可以是big5、cp1251、cp1257、czech、danish、dec8、dos、euc_kr、gb2312、gbk、german1、hebrew、hp8、hungarian、koi8_ru、koi8_ukr、latin1、latin2、sjis、swe7、tis620、ujis、usa7或win1251ukr。

可以指定默认校对规则。MySQL默认使用latin1_swedish_ci校对规则。要想更改,使用--with-collation选项:

shell> ./configure --with-collation=COLLATION
要想更改字符集和校对规则,要同时使用--with-charset和--with-collation选项。 校对规则必须是字符集的合法校对规则。(使用SHOW COLLATION语句来确定每个字符集使用哪个校对规则)。

如果想在服务器和客户端之间变换字符,你应该看一下SET OPTION CHARACTER SET命令。

警告:如果你在创建了任何数据库表之后改变字符集,你将必须对每个表运行myisamchk -r -q --set-character-set=charset,否则索引可能不正确地排序。(如果安装了MySQL,创建一些表,然后重新配置MySQL使用一个不同的字符集并且重新安装它,这时就可能发生这种情况。)

通过configure选项--with-extra-charsets=LIST,你可以定义在服务器中再定义哪些字符集。LIST 指下面任何一项:

o        空格间隔的一系列字符集名

o        complex -,以包括不能动态装载的所有字符集

o        all –,以将所有字符集包括进二进制

为了配置MySQL带有调试代码,使用--with-debug选项:
shell> ./configure --with-debug
这导致包含一个安全的内存分配器,能发现一些错误和并提供关于正在发生的事情的输出。

·         如果客户端程序使用线程,还必须使用--enable-thread-safe-client配置选项来编译线程安全版的MySQL客户端库。将创建一个libmysqlclient_r库,可以用来连接应用程序线程。

·         可以使用--with-big-tables选项构建支持大数据库表的MySQL。

该选项使变量用来将表行数保存到unsigned long long中而不是unsigned long。结果是允许表有大约1.844E+19 ((232)2)行而不是232 (~4.295E+09) 行。在以前,要完成该功能必须手动将-DBIG_TABLES传递给编译器。

属于特定系统的选项可在本章特定系统的小节里找到。

 从开发源码树安装
注意:如果你想帮助我们测试新代码,应当阅读本节。如果你只想在系统上安装并运行MySQL,应当使用标准发布分发版(二进制或源码分发版)。

要想获得我们的最新开发源码树,应使用说明:

1.    从http://www.bitmover.com/bk-client.shar下载BitKeeper免费客户端。

2.    在Unix上安装免费客户端:

3.            shell> sh bk-client.shar
4.            shell> cd bk_client-1.1
5.            shell> make all
6.            shell> PATH=$PWD:$PATH
在Windows上的安装方法:

·         从http://cygwin.com下载并安装Cygwin。

·         确保gcc和make已经安装到Cygwin。可以用which gcc和 which make命令进行测试。如果任何一个没有安装,运行 Cygwin安装包管理器,选择gcc、make并安装。

·         在Cygwin中,运行:

·                      shell> sh bk-client.shar
·                      shell> cd bk_client-1.1
然后编辑Makefile并将行s $(CC) $(CFLAGS) -o sfio -lz sfio.c更改为:

$(CC) $(CFLAGS) -o sfio sfio.c -lz
现在运行make命令并设置路径:

shell> make all
shell> PATH=$PWD:$PATH
7.    安装BitKeeper免费客户端后,首先进入工作目录,然后使用以下命令在本地复制MySQL 5.1:

8.            shell> sfioball -r+ bk://mysql.bkbits.net/mysql-5.1 mysql-5.1
一般情况,你不需要自己构建文档,因为我们已经在http://dev.mysql.com/doc/提供了许多格式。我们每天更新你可以下载的格式(HTML、PDF等),因此你没有必要从MySQLdoc树中的DocBook XML基本格式来创建。如果你想要复制文档库,使用下面的命令:

shell> sfioball -r+ bk://mysql.bkbits.net/mysqldoc mysqldoc
在前面的例子中,在当前目录的MySQL-5.1/子目录中设置源码树。

如果你位于防火墙后面,只能初始化HTTP连接,还可以通过HTTP使用BitKeeper。

如果需要使用代理服务器,设置环境变量http_proxy指向代理:

shell> export http_proxy="http://your.proxy.server:8080/"
当复制库时用http://替换bk://。例如:

shell> sfioball -r+ http://mysql.bkbits.net/mysql-5.1 mysql-5.1
下载源码树可能需要一段时间,取决于连接速度。请耐心等待。

9.    要想更新本地MySQL 5.1库复制,使用命令:

10.        shell> update bk://mysql.bkbits.net/mysql-5.1
11.你需要GNU make、autoconf 2.58 (或更新版)、automake 1.8、libtool 1.5和m4来运行后面的命令。尽管许多操作系统安装了make,很可能编译失败,出现许多奇怪的缺陷消息。因此,强烈建议你使用GNU make(有时名为gmake)。

幸运的是,大量的操作系统预装了GNU工具链或提供了可安装软件包。你可以随时从下面的地址下载:

·         http://www.gnu.org/software/autoconf/

·         http://www.gnu.org/software/automake/

·         http://www.gnu.org/software/libtool/

·         http://www.gnu.org/software/m4/

·         http://www.gnu.org/software/make/

要想配置MySQL 5.1,你还需要GNU bison 1.75或更新版。旧版本的bison会报告错误:

sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
注释:实际上并没有超出最大表空间;这是由旧版本的bison的缺陷造成的该问题。

下面的例子显示了配置源码树需要的典型命令。第一个cd命令将位置改为树的顶级目录;用相应目录名替换MySQL-5.1。

shell> cd mysql-5.1
shell> bk -r edit
shell> aclocal; autoheader
shell> libtoolize --automake --force
shell> automake --force --add-missing; autoconf
shell> (cd innobase; aclocal; autoheader; autoconf; automake)
shell> (cd bdb/dist; sh s_all)
shell> ./configure  # Add your favorite options here
shell> make
对于下面的命令,可以使用BUILD/autorun.sh作为快捷方式:

shell> aclocal; autoheader
shell> libtoolize --automake --force
shell> automake --force --add-missing; autoconf
shell> (cd innobase; aclocal; autoheader; autoconf; automake)
shell> (cd bdb/dist; sh s_all)
使用将目录改为innobase和bdb/dist目录的命令行来配置InnoDB和 Berkeley DB (BDB)储存引擎。如果你不需要InnoDB或BDB支持,你可以省略这些命令行。

如果在该阶段你遇到一些奇怪的错误,请确认你是否已经安装了 libtool。

标准配置脚本位于BUILD/子目录。你会发现使用BUILD/compile-pentium-debug脚本比使用前面的外壳命令要方便得多。要想在不同的架构上编译,可以修改脚本,即去掉Pentium相关标志。

12.构建完成后,运行make install。在产品机器上运行时应注意;该命令会覆盖你正使用的版本。如果你安装了另一个MySQL,我们建议你使用 与你的产品服务器上不同的--prefix、--with-tcp-port和--unix-socket-path选项值来运行./configure。

13.强制运行新安装和尝试会破坏新功能。应先运行make test。

14.如果你已经进入make阶段而分发版不编译,请报告给我们的http://bugs.mysql.com/中的缺陷数据库。如果你已经安装了GNU工具的最新版本,如果视图处理配置文件时出错,请报告给我们。但是,如果你执行aclocal并且遇到command not found error或类似问题,不要报告给我们。而是应确保安装了所有必要的工具,并且PATH变量设置正确,保证外壳命令可以找到它们。

15.复制完库(sfioball)获得源码树后,你应当定期更新库(update)。

16.你可以检查树的更改史,浏览源码树中的BK/ ChangeLog文件并查看ChangeSet描述找到所有不同点。要想检查特殊的更改集,必须使用sfioball命令提取源码树的两次不同的修订,然后使用外部diff命令来比较。如果你看到有疑问的奇怪的不同之处或代码,一定要向MySQL internals邮件列表发送邮件。

17.BitKeeper免费客户端预装了源码。免费客户端可用的唯一文档是源码本身。

你还可以在线浏览更改集、注释和源码。要想浏览MySQL 5.1的相关信息,请到http://mysql.bkbits.net:8080/mysql-5.1。

2.8.4. 处理MySQL编译问题
所有MySQL程序在Solaris或Linux上使用gcc编译并且没有任何警告。在其它系统上,由于系统包含文件的差别可能会发生警告。对于使用MIT-pthreads时发生的警告。

许多问题的解决方案涉及重新配置。如果你确实需要重新配置,注意下列事项:

如果configure在它已经被运行了以后运行,它可以使用先前收集的信息。这个信息存储在“config.cache”里面。当configure启动时,它寻找该文件而且如果它存在,假定信息仍然是正确的,读入它的内容。当你重新配置时,该假设无效。
每次运行configure的时候,必须运行make再重新编译。然而, 你可能想要把先前构造的老的目标文件删除,因为它们使用不同的配置选项编译而成。
为了防止使用旧的配置信息或目标文件,重新运行configure前运行这些命令:

shell> rm  config.cache

shell> make clean

另外,你可以运行make distclean。

下表描述了一些最常发生的编译MySQL的问题:

如果在编译“sql_yacc.cc”时,遇到如下错误,可能是存储器或交换空间溢出:
·                Internal compiler error: program cc1plus got fatal signal 11
·                Out of virtual memory
·                Virtual memory exhausted
该问题是gcc要求大量的内存编译带有嵌入函数(inline function)的“sql_yacc.cc”。试试以--with-low-memory选项运行configure:

shell> ./configure -- with-low-memory

如果你正在使用gcc,该选项使得将-fno-inline加到编译行,如果你正使用其它的编译器,则加入-O0。你应该试一试--with-low-memory选项,即使你有特别多的存储器和交换空间,而你认为不可能运行得溢出。这个问题甚至会在很慷慨的硬件配置的系统上出现,通常用--with-low-memory选项修正它。

默认情况,configure选则c++作为编译器并用-lg++选项的GNU c++链接。如果你正在使用gcc,这个特性在配置期间导致如下问题:
·                configure: error: installation or configuration problem:

·                C++ compiler cannot create executables.

也可能在编译期间看到g++、libg++或libstdc++相关的问题。

这些问题的一个原因是你可能没有g++,或可能有g++但无libg++或libstdc++。看一下“config.log”文件。它应该包含c++编译器不能工作的准确原因!为了解决这些问题,可以使用gcc作为C++编译器。试试设置环境变量CXX为"gcc -O3"。例如:

shell> CXX="gcc -O3" ./configure

可以工作,因为gcc象g++一样编译C++源码,但 默认地它不链接libg++或libstdc++。

解决这些问题的其它方法当然是安装g++、libg++和libstdc++。然而,我们建议不要在MySQL中使用libg++或libstdc++,因为只会增加mysqld二进制空间而不会带来任何好处。部分版本的库在过去曾经给用户带来一些奇怪的问题。

·         如果你的编译以下面任何错误而失败,必须升级make版本到GNUmake:

·                making all in mit-pthreads
·                make: Fatal error in reader: Makefile, line 18:
·                Badly formed macro assignment
或:

make: file `Makefile' line 18: Must be a separator (:
或:

pthread.h: No such file or directory
已知Solaris和FreeBSD的make程序有问题。

已知GNU make 3.75能工作。

·         如果你想要定义C或C++编译器所使用的标志,把标志加到CFLAGS和CXXFLAGS环境变量中即可。也可以使用CC和CXX来指定编译器名字。例如:

·                shell> CC=gcc
·                shell> CFLAGS=-O3
·                shell> CXX=gcc
·                shell> CXXFLAGS=-O3
·                shell> export CC CFLAGS CXX CXXFLAGS
对于已经知道在不同系统上有用的标志定义列表,参见2.1.2.5节,“MySQL AB编译的MySQL二进制版本”。

·         如果你遇到象如下的一条错误消息,则需要升级gcc编译器:

·                client/libmysql.c:273: parse error before `__attribute__'
gcc2.8.1已知可以工作,但是我们推荐使用gcc 2.95.2或egcs 1.0.3a。

·         如果编译mysqld时显示例如下面的那些错误, configure没有正确地检测传到accept()、getsockname()或getpeername()最后参数的类型:

·                cxx: Error: mysqld.cc, line 645: In this statement, the referenced
·                     type of the pointer value ''length'' is ''unsigned long'',
·                     which is not compatible with ''int''.
·                new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
为了修正它,编辑“config.h”文件(它由configure生成)。寻找这些行:

/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX
更改XXX为size_t或int,取决于你的操作系统。(注意:每次运行configure都必须这样做,因为configure重新生成“config.h”)。
“sql_yacc.cc”文件由“sql_yacc.yy”生成。通常构造过程不需要创造“sql_yacc.cc”,因为MySQL有一个已经生成的拷贝,然而,如果你确实需要再创建它,可能会碰到这个错误:
·                "sql_yacc.yy", line xxx fatal: default action causes potential...

这是一个yacc版本不完善的迹象。你可能需要安装bison(GNU的yacc)并使用它。

·         在Debian Linux 3.0上, 如果你编译的MySQL 5.1要支持Berkeley DB,需要安装gawk代替默认的mawk。

·         如果你需要调试mysqld或MySQL客户端,运行configure,使用--with-debug选项,然后重新编译并且将客户端程序链接到新的客户端库。

·         如果你在Linux(例如,SuSE Linux 8.1或Red Hat Linux 7.3)下遇到类似下面的编译错误:

·                libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from
·                incompatible pointer type
·                libmysql.c:1329: too few arguments to function `gethostbyname_r'
·                libmysql.c:1329: warning: assignment makes pointer from integer
·                without a cast
·                make[2]: *** [libmysql.lo] Error 1
默认情况,configure脚本试图使用g++ GNU C++编译器来确定正确的参数。如果未安装g++,将会产生错误的结果。有两种方法可以解决该问题:

o        确保安装了GNU C++ g++。在某些Linux分发版上,需要安装的软件包叫做gpp;在其它分发版上名为gcc-c++。

o        使用gcc作为C++ 编译器,将CXX环境变量设置为gcc:

o                     export CXX="gcc"
请注意之后需要再次运行configure。

 MIT-pthreads注意事项
这节描述使用MIT-pthreads时所涉及的一些问题。

在Linux上,应该不使用MIT-pthreads而是安装LinuxThreads!参见2.12.1节,“Linux注意事项”。

如果你的系统不提供原生的线程支持,将需要使用MIT-pthreads包构造MySQL。这包括大多数FreeBSD系统、SunOS 4.x、Solaris 2.4和更早版本及其它,参见2.1.1节,“MySQL支持的操作系统”。

MIT-pthreads不是MySQL 5.1源码分发版的一部分。如果你需要该安装包,需要单独从http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz下载。

下载后,将源文件提取到MySQL源码目录的顶级目录。将创建新的mit-pthreads子目录。

在大多数系统上,你能通过使用configure并用--with-mit-threads选项来强迫运行MIT-pthreads:
shell> ./configure -- with-mit-threads
当使用MIT-pthreads时,不支持在一个非源码目录构造,因为我们想要使我们对代码的改变减到最小。

·         决定是否使用MIT-pthreads的检查仅在处理服务器代码的配置过程期间发生。如果已经用--without-server配置了分发版并只构造客户端代码,客户端将不知道MIT-pthreads是否正在被使用并且是否使用 默认的Unix套接字连接。因为在某些平台上Unix套接字文件不能在MIT-pthreads下面工作,这意味着当你运行客户端程序时,你需要使用-h或--host。

·         当使用MIT-pthreads编译MySQL时,因为性能原因,系统锁定 默认为禁止使用。你可以用--external-locking选项告诉服务器使用系统锁定。只是在相同数据文件上运行两个MySQL服务器时采需要,因此不推荐。

有时pthreadbind()命令不能绑定一个套接字但没有任何错误消息(至少在Solaris上),结果是所有到服务器的连接均失败。例如:
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'
解决它的方法是杀死mysqld服务器并且重启它。这只有当我们强迫服务器停止并马上进行重启时在发生。

使用MIT-pthreads,不能用SIGINT(break)中断sleep()系统调用。这只有在运行mysqladmin --sleep时才能注意到。在中断起作用并且进程停止之前必须等待sleep()终止。
当链接时,你可能会收到这样的警告消息(至少在Solaris上);它们可以被忽视:
ld: warning: symbol `_iob' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
 

一些其它的警告也可被忽略:
implicit declaration of function `int strtoll(...)'
implicit declaration of function `int strtoul(...)'
我们还没有让readline在MIT-pthreads上工作。(这不需要,但是可能某些人会感兴趣。)

ESP32Servo库驱动SG90舵机:从入门到精准控制 本文详细介绍了如何使用ESP32Servo库驱动SG90舵机,从硬件连接到软件环境搭建,再到编写示例程序实现精准控制。内容涵盖库安装、基础驱动代码解析、舵机校准方法以及平滑运动控制,帮助开发者快速掌握ESP32控制舵机的核心技能,并提供了电源管理、信号抗干扰等实用避坑指南。 阅读详情

相关推荐

经典烧脑算法逻辑题--高楼扔鸡蛋:最少次数测出鸡蛋摔碎临界点。

如果在第2层没碎,换到第3层扔.......如果第59层没碎,换到第60层扔;有2个鸡蛋,从100层楼上往下扔,以此来测试鸡蛋的硬度。比如鸡蛋在第9层没有摔碎,在第10层摔碎了,那么鸡蛋不会摔碎的临界点就是9层。因此,我们尝试每10层扔一次,第一次从10层扔,第二次从20层扔,第三次从30层......一直扔到100层。如果第一枚鸡蛋,在50层碎了,第二枚鸡蛋,就从第1层开始扔,一层一层增长,一直扔到第49层。如果第一枚鸡蛋在50层没碎了,则继续使用二分法,在剩余楼层的一半(75层)往下扔。

借雨醉东风的博客 1818

mysql数据库 生成 lib_为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置...

本文内容包括两部分:一。 为 DEV-C++ 生成 libmysql.a 的过程二。windows下 devc++ c语言访问mysql数据库 环境配置一。为 DEV-C++ 生成 libmysql.a 的过程目的:因为DEV-C++ 使用的编译器是gcc, 而 MySQL自带的libmysql.dll 只支持Visual Stdio。为此,需要从libmysql.dll 生成libmysql.a...

weixin_36348080的博客 377

手把手教你用键盘在Ubuntu上给Lerobot机械臂采集HIL-SERL训练数据(附完整配置文件)

本文详细介绍了在Ubuntu系统中使用键盘控制Lerobot机械臂进行HIL-SERL训练数据采集的完整流程。从环境准备、机械臂校准到键盘遥操系统配置和数据采集优化,提供了实战指南和常见问题解决方案,帮助读者高效获取高质量训练数据,推动具身智能和强化学习应用的发展。

weixin_30733003的博客 479

Error processing tar file(exit status 1): write /usr/local/src/mysql/libmysqld/libmysqld.a: no space

问题 Error processing tar file(exit status 1): write /usr/local/src/mysql/libmysqld/libmysqld.a: no space left on device [root@localhost mysql]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda2 20G 17G 3.8G 82% / devtmpfs 978M 0 978M

IvyXYW的博客 5322

绝对旋转编码器学习笔记(基本原理,与PC通信等,不定期更新中)

前言 最近开始学习编码器相关内容,目的在于搞清楚编码器的原理,与上位机的联系等问题。笔记资料来源为网络,整理的同时也会有一些总结和感悟。由于研究方向需求,主要研究数字旋转编码器。 1.编码器的定义 编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。——摘自《百度百科》 通常来说,编码器可以将角度位移、直线位移、转速等物理量转换为电信号。这里的电信号根据不同原理的编码器输出脉冲、二进制数码等不同的类型,下面会提到。 2.编码器的分类 编.

黑化咸鱼的博客 1万+

基于Simulink的电动汽车电池管理系统热管理优化仿真

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池性能、安全性和寿命的关键环节。温度过高或过低都会显著影响电池的工作效率和寿命,因此需要对电池组进行精确的热管理。基于MATLAB/Simulink的仿真平台可以用于建模和优化电池热管理系统,包括热分布预测、冷却策略设计以及热平衡控制等。本项目旨在构建一个完整的电动汽车电池热管理优化仿真模型,并通过仿真验证系统的性能。

xiaoheshang_123的博客 462

mysql源码安装

1、安装依赖            在安装mysql之前需要安装的依赖有make、bison、gcc-c++、cmake、ncurses            以上下载地址如下:             make编译器下载地址:http://www.gnu.org/software/make/             bison下载地址:http://www.gnu.org/softwar

zengzehui的专栏 88万+

windows下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

一、环境介绍 操作系统:win10 64位系统 Linux下搭建Nginx搭建Rtmp流媒体服务器方法请看这里:https://blog.csdn.net/xiaolong1126626497/article/details/105378894 二、流媒体服务器介绍 流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。 nginx服务器是开源的高性能的http服务器,反向

1万+

qt无法与64位mysql数据库_CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

用qt连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然。用ldd命令分析一下,libmysqlclient_r.so.16 => not found ,后明显libmysqlclient_r.so.16 缺少另一个共享库,他们是依赖关系,解决了这个问题qt才能真的连接到mysql数据库。而我的/usr/l...

weixin_34493827的博客 235

曲线最小二乘拟合基础

介绍曲线拟合的最小二乘原理,介绍了常规最小二乘和正交最小二乘算法,最后介绍了MathNet矩阵运算库的基本操作。

yh523的博客 1303

QML实现ListView的拖动排序

现有一种需求,就是用鼠标拖动某项,动态去改变某一项在ListView中显示的顺序位置,经过研究及实践实战,实现方式的核心代码如下: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 Rectangle { width: 800 ...

草上爬的博客 7564

数据库概述、mysql源码安装----线下

数据库概述 MySQL源码安装 配置mysqld服务的管理工具

qq_47800859的博客 528

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

精准农业是现代农业发展的核心方向,其中杂草的实时、准确检测是减少除草剂滥用、实现变量喷施的关键技术瓶颈。本文详细阐述了一套完整的、基于YOLO(You Only Look Once)系列目标检测算法的田间杂草检测系统。系统覆盖从模型对比选型(YOLOv5, YOLOv6, YOLOv7, YOLOv8)、自定义数据集构建与标注、模型训练与优化,到最终构建基于PyQt5/FastAPI/Gradio的可视化UI界面的全流程。本文提供了完整的Python代码、项目结构、训练技巧及公开数据集指引,旨在为农

YOLO 358

CentOS 5.5 下源码安装 MySQL 5.5.11 概述

安装 gcc gcc-c++[root@localhost ~]# yum install gcc[root@localhost ~]# yum install gcc-c++安装cmake[root@localhost ~]#...

cuisawei2676的博客 134

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

day34-MySQL介绍及安装

MySQL介绍及安装 一、MySQL概述 1、关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了二维表格来组织数据的数据库。 扩展:数据库在行业内一般会有两种情况,关系型数据库与非关系型数据库。非关系型数据库并不是通过二维表格来维护数据的,而是通过key/value键值对来维护数据的。 2、常见的关系型数据库 oracle、mysql、DB2(IBM)、Sybase、SQL

爪蛙毁一生的博客 513

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Mysql安装与介绍

MySQL安装与介绍 一、MySQL概述 1、关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了二维表格来组织数据的数据库。 扩展:数据库在行业内一般会有两种情况,关系型数据库与非关系型数据库。非关系型数据库并不是通过二维表格来维护数据的,而是通过key/value键值对来维护数据的。 2、常见的关系型数据库 oracle、mysql、DB2(IBM)、Sybase、SQL

HiSiri的博客 8539

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Linux 介绍、安装MySQL 5.7

MySQL是一种关系型数据库管理系统由瑞典MySQL AB 公司开发,目前属于Oracle旗下MySQL是C/S架构。

CoderChronicle的博客 3444

LAMP使用YUM或源码编译安装详解

LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。

新站点ikuriko.github.io 542

【mysql】mysql目录结构和源码和mysql基础练习

1.说说你了解的常见的数据库2.谈谈你对MySQL历史、特点的理解历史: MySQL先是由瑞典的一家MySQL AB公司建立,1995年建立。2008年MySQL被SUN公司收购2009年被Oracle收购SUN公司结果上来看Oracle就获取了mysql2016年mysql推出mysql8.0,直接从5.7跨越到8.0,新增加了很多功能。特点:3.说说你对DB、DBMS、SQL的理解DB:DB是数据文件,类似与.doc,.txt.xlsx.pptx.png。

qq1021091799qq的博客 1327

彻底清除百度网盘右键菜单:注册表精准清理指南

Windows右键菜单是Shell扩展机制的核心交互入口,其性能与稳定性直接依赖注册表中CLSID、ContextMenuHandlers及Shell Extensions Approved列表的规范配置。百度网盘通过注入InprocServer32 DLL实现文件/文件夹级右键项,本质属于COM组件驱动的Shell扩展,若卸载不彻底,将导致菜单延迟、Explorer崩溃或CPU异常占用。该问题广泛关联‘windows资源管理器频繁重启’‘右键响应慢’等高频搜索故障,常见于程序员、设计师等重度右键用户场景。

weixin_33910385的博客 479

【Linux40-2】MySQL简介及源码安装

文章目录一、简介1.1 系统特性1.2 存储引擎二、部署 一、简介 MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,灵活性和可管理型也得到了很大提高,访问以及管理MySQL数据库的最常用标准化语言为SQL结构化查询语句。 特点: (1) MySQL性能卓越、服务稳定,很少出现异常宕机 (2) MySQL开放源代码且无版权制约,自主性及使用成本低 (3) MyS

weixin_46069582的博客 790

MySQL的安装

第一阶段-----人工管理阶段:在20世纪50年代中期以前,这个阶段如果要使用和进行数据计算,需要程序开发人员自己设计程序,没有相应的软件系统负责数据管理工作。应用程序中不仅要规定数据逻辑结构,还要设计物理结构,包括存储结构、存取方法、输入方式等。程序员负担非常重,非程序员无法使用计算机系统。第二阶段-----文件系统阶段:这个时期大约从20世纪50年代后期到60年代中期,这个阶段里数据组织成独立的数据文件,按文件名访问,按记录进行存取的方式进行数据管理,由文件系统提供文件打开、关闭、读写和存取。

m0_63069714的博客 813

PostgreSQL安装mysql_fdw

PostgreSQL安装mysql_fdw 目录 目录 目录 插件概述 PostgreSQL提供mysql_fdw插件提供了外部数据包装器mysql_fdw,它可以被用来访问存储在外部MySQL服务器中的数据。 编译安装(本文使用源码安装) 1、下载源代码 源码下载 2、安装插件 1)解压 unzip mysql_fdw-master.zip cd mysql_fdw-master 2)安装mysql_config命令 yum install mysql-devel...

Authority_01的博客 1113

MySQL——源码安装教程

本篇为MySQL的安装中具体的源码安装以及配置,详细内容包含了:MySQL的安装 1、RPM 2、二进制 3、源码 源码安装方式安装过程 1、上传源码包2、解压当前文件并安装更新依赖3、对MySQL进行编译安装等等

钟言的博客 9818

Linux下源码包安装MySQL

一、卸载旧版本的MySQL 1、查看旧版本的MySQL rpm -qa |grep -i mysql 2、卸载旧版本MySQL 普通删除 rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 mysql-server-5.1.73-8.el6_8.x86_64 mysql-devel-5.1.73-8.el6_8.x86_64 可能失败,如下图所示...

liangkk的博客 1万+

MySQL源码安装

MySQL源码安装包括一些常见的报错

DBA成长之路 1689
上一篇: 在LINUX下安装MYSQL
下一篇: Java 读/写文件文本文件的示例
laester
博客等级 码龄19年 36粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值