‘壹’ 2G内存环境下MySQL编译安装全攻略2g内存编译mysql
2G内存环境下MySQL编译安装全攻略
MySQL是全球最流行的开源数据库,因其高性能、稳定性和可扩展性被广泛应用于各种应用场景。虽然官方提供了针对各种操作系统和架构的官方二进制包,但许多人更愿意通过编译源代码来获得更多的自定义和优化。本文将介绍在2G内存环境下编译安装MySQL的全过程。
第一步:准备工作
在开始编译MySQL之前,需要确保系统已经安装了必要的依赖库和工具。以下是几个常用的依赖库和工具:
1. gcc
gcc是GNU的C语言编译器,是linux系统下的标准编译工具,任何高级编程语言都需要通过gcc编译器进行编译。安装gcc的命令如下:
yum install gcc
2. CMake
CMake是一个跨平台的自动化构建工具,可以生成各种工程文件,如Makefile、Visual Studio等。安装CMake的命令如下:
yum install cmake
3. ncurses
ncurses是一个开源的、可移植和API一致的终端屏幕控制库。许多Linux上的终端工具都需要ncurses库的支持。安装ncurses的命令如下:
yum install ncurses-devel
4. bison
bison是一款生成编译器的自由软件,常被用来生成语法解析器。MySQL使用bison生成语法解析器,安装bison的命令如下:
yum install bison
5. openssl
OpenSSL是一个开源的安全套接字层(Secure Sockets Layer)和传输层安全(Transport Layer Security)协议的开发库。MySQL在安装时需要使用openssl,可以通过以下命令安装:
yum install openssl-devel
第二步:下载MySQL源码
访问MySQL官网,下载源码包。本文以5.7.35版本为例:
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.35.tar.gz
下载完成后,将源码包解压到目录中:
tar zxvf mysql-5.7.35.tar.gz
第三步:配置编译选项
进入MySQL源码目录,执行以下命令进行编译选项配置:
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_BOOST=boost \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1
其中,各选项含义如下:
1. CMAKE_INSTALL_PREFIX
MySQL的安装目录,默认安装到/usr/local/mysql目录下。
2. MYSQL_DATADIR
MySQL的数据目录,默认安装到/usr/local/mysql/data目录下。
3. MYSQL_UNIX_ADDR
MySQL的UNIX Domn Socket地址,默认安装到/usr/local/mysql/mysql.sock。
4. WITH_BOOST
启用BOOST库加速编译速度。
5. WITH_*_STORAGE_ENGINE
启用各种存储引擎。
6. WITH_DEBUG
开启调试模式。
7. WITH_SSL
启用SSL加密。
8. ENABLED_LOCAL_INFILE
启用从本地加载数据。
第四步:编译安装MySQL
执行以下命令进行编译和安装:
make && make install
编译完成后,会将MySQL二进制文件和支持文件安装到/usr/local/mysql目录下。
第五步:启动MySQL
执行以下命令启动MySQL:
/usr/local/mysql/bin/mysqld_safe –user=mysql &
等待片刻后,可以尝试连接到MySQL服务器:
/usr/local/mysql/bin/mysql -u root -p
输入密码,如果能够成功登录,则表示MySQL编译安装已经完成。
总结
本文介绍了在2G内存环境下编译安装MySQL的全过程,需要注意的是,在低内存环境下编译MySQL需要确保操作系统配置合理,否则可能会因为系统资源不足而导致编译失败。在实际生产环境中,建议使用高配置的服务器或者使用现成的MySQL二进制包。
‘贰’ 编译环境与生产环境gcc版本不一致是否会有问题
有一些abi兼容性问题,如果你的程序有静态或动态链接不全支持c++11的libc的话。
如果你的程序完全是用gcc 4.84编译链接出来,也没有动态链接低版本的libc的话应该没有问题
‘叁’ gRPC入坑记
概要
由于gRPC主要是谷歌开发的,由于一些已知的原因,gRPC跑demo还是不那么顺利的。单独写这一篇,主要是gRPC安装过程中的坑太多了,记录下来让大家少走弯路。
主要的坑:
本文讲解gRPC demo的同时,会介绍如何解决这些坑。本文对应的Github地址:https://github.com/52fhy/grpc-sample 。该仓库存储了demo示例,以及部分系统编译好的二进制包,大家觉得有些步骤里耗时实在太长了,可以直接clone该仓库,复制二进制包到对应目录(仅限测试开发,生产环境还是老老实实自己编译吧)。
升级GCC
gRPC命令行工具编译需要使用 GCC4.8及以上版本。CentOS6系列的内置版本是GCC4.7。
如果你的系统GCC版本>=4.8,可以忽略本节。如果仅使用golang、java,请忽略本节。
如果需要升级gcc至4.8或更高版本,建议直接采用安装SCL源之后安装devtoolset-6(devtoolset-6目前gcc版本为6.3),因为devtoolset-4及之前的版本都已经结束支持,只能通过其他方法安装。
升级到gcc 6.3:
需要注意的是scl命令启用只是 临时 的,退出shell或重启就会恢复原系统gcc版本。如果要长期使用gcc 6.3的话:
这样退出shell重新打开就是新版的gcc了。其它版本同理。
升级到gcc 7.3:
已经停止支持的devtoolset4(gcc 5.2)及之前版本的安装方法,可能比较慢,大家感兴趣的话可以尝试。
编译gRPC命令行工具
gRPC分C、JAVA、GO、NodeJS版本,C版本包括C++, Python, Ruby, Objective-C, php, C#,这些语言都是基于C版本开发的,共用代码库一个代码库。
如果使用C版本的gRPC,最终要从源码里编译出下列工具:
这些工具作为插件供proto编译器使用。需要先下载 grpc/grpc github上的源码。
这里有2个坑:
1、grpc/grpc仓库比较大,鉴于国内访问的网速,建议使用国内镜像。码云(https://gitee.com)提供了同步更新的镜像地址:
这样下载速度提高了不少。
2、git submole update这个命令实际就是在下载.gitmoles文件里定义的第三方依赖项到third_party目录,这个依赖项有很多,大家可以打开.gitmoles文件查看下详情。依赖的仓库都在github上,下载没几个小时是下载不下来的,就等着慢慢下载吧。
回头想想,我们花费了很多时间,结果只是为了得到grpc的proto编译插件。
PHP相关支持
PHP暂时不支持作为grpc的服务端。作为客户端是可以的,需要机器安装:
其中protoc和protobuf c扩展已经在 Protobuf 小试牛刀 介绍过了,这里不再赘述。上一小节里如果安装成功,那么grpc_php_plugin也是有了的。下面介绍如何安装PHP版的gRPC库。
安装grpc c扩展:
要求:GCC编译器需要4.8及以上版本。可以使用pecl安装:
也可以指定版本:
或者下载源码(http://pecl.php.net/package/grpc)安装:
grpc/grpc代码库里也有PHP扩展的C源码,在grpc/src/php/ext/grpc目录,进去也可以直接编译。
编译完成后在php.ini里添加,使用php --ri grpc可以查看信息。
安装完C扩展后,还需要使用composer安装grpc的库:
gRPC示例
编写gRPC proto
一共定义了三个文件:
其中 User 作为 Model定义,Response 用于 RPC统一返回定义,GreeterService 则是服务接口定义。
限于篇幅,proto文件详见 https://github.com/52fhy/grpc-sample 仓库的proto目录。
GreeterService.proto文件内容如下:
这里面定义了一个service,相当于定义了一个服务接口,我们把方法名、参数定义好了,后面需要去实现它。由于gRPC不支持PHP作为服务端,这里我们使用Golang作为服务端。
首先需要使用proto工具编译出golang的代码:
执行成功,会在 Pb_Go目录里生成Go代码:
如果需要生成PHP客户端的代码,则需要使用grpc php的命令行工具grpc_php_plugin,前面小结如果执行成功,这个工具已经有了。然后:
最终生成的文件:
注意:编译那里如果我们不加--grpc_out=../$out --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin,生成的PHP类是没有GreeterClient的。这个文件是gRPC编译工具自动生成的,用于连接gRPC服务端。
go编写服务
我们用Golang写服务端。上面虽然生成了Golang的部分代码,但真正的服务还没有写呢。
main.go
首先我们新建个main.go,代码不多,我直接贴出来:
然后就可以编译了。
有个大坑:go build main.go的时候会先下载go.mod里定义的依赖(依赖比较多,详情查看:https://github.com/52fhy/grpc-sample/blob/master/go.mod),其中下面这条非常慢,仓库太大了,虽然重定向到github:
为了快速下载,我在码云上做了镜像,地址:gitee.com/52fhy/google-api-go-client 。改了之后下载快多了。
编译成功后,生成了二进制文件main。我们可以直接运行:
go test
为了测试我们写的服务是否正常,可以写测试用例:
test_client.go
运行:
运行有点慢,感觉依赖的库多了。
php客户端
使用gRPC PHP客户端,确保你已经安装了:
示例:
client_test.php
运行后输出:
常见问题
1、CentOS6使用 go mod获取第三方依赖包unknown revision xxx错误
解决:其实go mod调用链中会用到一些git指令,当git版本比较旧时,调用失败产生错误,并给出歧义的提示信息。方法就是升级git版本,CentOS6自带的git是1.7版本。升级完毕后,再尝试go mod。
快速升级方法:
centos6:
2、PHP报错:Fatal error: Class ' not found
解决:请安装PHP的protobuf c扩展。
3、PHP报错:Fatal error: Class 'GrpcBaseStub' not found
解决:使用composer require grpc/grpc安装grpc。另外对应的grpc C扩展也要安装。
4、下载 github release包很慢怎么办?
解决:下载Mac版 Free Download Manager 下载工具可以解决Github 下载缓慢或失败问题。速度嗖嗖的。
参考
1、为CentOS 6、7升级gcc至4.8、4.9、5.2、6.3、7.3等高版本
http://www.vpser.net/manage/centos-6-upgrade-gcc.html
2、centos 6.x/7.x使用yum升级git版本 - 夜空
https://blog.slogra.com/post-721.html
3、Protobuf 小试牛刀 - 飞鸿影
https://www.cnblogs.com/52fhy/p/11106670.html
(本文完)
‘肆’ 操作系统,红帽9 安装 GCC 与编译 Hello World application on RHEL 9
启用红帽开发者订阅是个人开发者获取Red Hat资源的免费途径。该订阅提供全面的Red Hat Enterprise Linux (RHEL)访问权限,包括Red Hat的开发工具和资源,如Red Hat JBoss Enterprise Application Platform和Red Hat OpenShift。订阅主要针对非商业开发和测试工作设计,对于生产环境或商业用途仍需购买商业许可。
为了注册系统并附加开发者订阅,请确保拥有一个允许下载软件和从Red Hat获取更新的当前RHEL 9工作站或服务器订阅。如无订阅,可注册获取Red Hat Enterprise Linux Developer Suite(包括RHEL服务器)。
在本教程中,您将通过Red Hat Developer Toolset安装GCC 12,并构建一个简单的C++ Hello World应用。完成教程所需时间少于30分钟。
在开始之前,确保拥有当前的RHEL 9工作站或服务器订阅。如果尚未订阅,可注册获取Red Hat Enterprise Linux Developer Suite,包括RHEL服务器。
管理RHEL 9的软件仓库对于开发者和系统管理员至关重要。通过以下命令发现所需的GCC相关仓库,确保获取适用于开发需求的最新和最更新资源。此功能在RHEL 9中简化了仓库管理。
检查服务器上的RHEL版本。
使用以下命令列出GCC相关仓库:
在本步骤中,使用单个命令下载并安装GCC 12.x及其他Red Hat Developer Toolset包含的开发工具。此步骤的时长取决于您的互联网连接速度和系统速度。在快速连接下,该步骤仅需一分钟。
RHEL提供了一套完整的C和C++应用程序开发工具。
在本步骤中,通过命令行使用GNU C++编译器gcc,添加DTS到环境,并参阅Permanently adding DTS to your Development Environment获取更多信息。
创建目录hello-cpp并切换至该目录:
创建文件hello.cpp,内容如下:
hello.cpp
现在编译并运行程序:
此命令编译代码。
创建hello.cpp的对象,并从对象文件链接生成可执行文件hello。
访问developers.redhat.com/p...
‘伍’ centos6编译及安装ZLMediaKit解析
centos6安装ZLMediaKit
ZLMediaKit的作者是使用Ubuntu 16开发的,但是如果要跑到测试甚至于生产上必须要部署到centos上,笔者主要是使用centos6 (centos7除了下面rpm包外,编译组件操作一致),因为有需求就装完给大家分享一下。
1.安装基础编译环境
1.1 gcc-5.4的安装
注意:centos6默认gcc的版本是gcc-4.4,此时需要升级到gcc-5.4,网络上说的升级到gcc-4.7以上以支持c11是错误的,实测gcc-4.8无法成功cmake出相关基础配置框架
wget http://mirrors.nju.e.cn/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
tar -zxvf gcc-5.4.0.tar.gz
cd gcc-5.4.0
./contrib/download_prerequisites
cd ..
mkdir gcc-build-5.4.0
cd gcc-build-5.4.0
../gcc-5.4.0/configure –enable-checking=release –enable-languages=c,c++ –disable-multilib
make && make install(我的虚拟机是双核处理器2.5G内存,需要1个小时,早知多配置几个核心。。。等死了)
gcc -v 此时系统gcc会自动变成gcc-5.4版本
1.2 cmake-3.10安装
暂时没有测试cmake3其他版本是否能安装,目前使用的3.10与作者版本一致
tar -zxvf cmake-3.10.0-rc4.tar.gz
cd cmake-3.10.0
./bootstrap
gmake && gmake install
yum remove cmake
ln -s /usr/local/bin/cmake /usr/bin/cmake
ln -s /usr/local/bin/cpack /usr/bin/cpack
ln -s /usr/local/bin/ctest /usr/bin/ctest
#或者是写环境变量
export PATH=$PATH:/usr/local/bin
#配置进/etc/profile之后source也可以验证:
# cmake –version
cmake version 3.10.0-rc42.编译ZLMediaKit
2.1下载代码
git clone –depth=1 https://github.com/xiongziliang/ZLMediaKit.git
cd ZLMediaKit
git submole init
git submole update2.2 安装依赖性
yum install mysql-devel.x86_64 openssl-devel ffmpeg ffmpeg-devel另外三个rpm包也需要安装,链接如下:
libx264-devel(https://pkgs.org/download/libx264)
wget http://pkgrepo.linuxtech.net/el6/release/x86_64/libx264-devel-0.130-0.20130531.1.el6.x86_64.rpm
libfaac-devel (https://pkgs.org/download/libfaac)
wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic//libfaac-devel-1.28-alt2.x86_64.rpm
libmp4v2-dev(https://pkgs.org/download/libmp4v2)
wget https://download-ib01.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libmp4v2-1.5.0.1-10.el6.x86_64.rpm2.3 编译
# mkdir linux_build
# ln -s linux_build/ build
# cd build
# cmake ..
— The C compiler identification is GNU 5.4.0
…
— Configuring done
— Generating done
— Build files have been written to: /usr/local/src/install_pack/ZLMediaKit/build
# make编译好可执行的文件在ZLMediaKit/git/ZLMediaKit/build/bin下面
3.运行编译好的ZLMediaKit
cd ZLMediaKit/git/ZLMediaKit/build
./bin/MediaServer
# netstat -antlp | grep ./MediaServer
tcp 0 0 0.0.0.0:555 0.0.0.0:* LISTEN 26771/./MediaServer
tcp 0 0 0.0.0.0:1936 0.0.0.0:* LISTEN 26771/./MediaServer
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26771/./MediaServer
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 26771/./MediaServer
tcp 0 0 0.0.0.0:322 0.0.0.0:* LISTEN 26771/./MediaServer
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 26771/./MediaServer如果要修改端口,在编译前,找到ZLMediaKit/git/ZLMediaKit/server/main.cpp
在namespace mediakit {下面进行对各服务器端口号的修改
总结
以上所述是小编给大家介绍的centos6编译及安装ZLMediaKit解析,大家如有疑问可以留言,或者联系站长。感谢亲们支持!!!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
‘陆’ C语言编译器和IDE的选择
C语言编译器和IDE的选择是Windows的IDE使用Visual Studio或者Dev C++,XP或者Win7的IDE使用C-Free。Linux的IDE使用GCC,Mac OS X的IDE使用Xcode。
在Windows下,可执行程序(Executable Program)大部分是.exe程序,它是一系列计算机指令和数据的集合。这些指令都是二进制形式的,CPU可以直接识别,毫无障碍;但是对于程序员,它们非常晦涩,难以记忆和使用。
计算机发展初期,程序员就是使用这些二进制形式的CPU指令来编写程序的。
直接使用CPU指令编程对程序员来说简直是噩梦,尤其是当程序比较大的时候,不但编写麻烦,需要频繁查询指令手册,而且除错会异常苦恼,要直接面对一堆二进制数据,让人眼花缭乱。另外,用CPU指令编程步骤繁琐,要考虑各种边界情况和底层问题,开发效率十分低下。
这就倒逼程序员开发出了编程语言,提高自己的生产力;例如汇编、C语言、C++、Java、Python、Go语言等,都是在逐步提高开发效率。至此,编程终于不再是只有极客能做的事情了,不了解计算机的读者经过一定的训练也可以编写出有模有样的程序。
选择合适的IDE:
实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如编辑器、调试器、文件管理等,这些工具通常被打包在一起,统一发布和安装。
例如Visual Studio、Dev C++、Xcode、Visual C++6.0、Code:Blocks、C-Free等,它们统称为IDE(Integrated Development Environment,集成开发环境)。
1、Windows:
Windows下的IDE比较多,我推荐使用Visual Studio或者Dev C++;如果你的操作系统是XP或者Win7,你也可以使用C-Free。另外,国内很多高校还在使用Visual C++6.0,把它作为C语言教学的工具。
①Visual C++6.0(简称VC6.0)是微软开发的一款经典的IDE,很多高校都以VC6.0为教学工具来讲解C和C++。但VC6.0是1998年的产品,很古老了,在Win7、Win8、Win10下会有各种各样的兼容性问题,甚至根本不能运行,所以不推荐使用。
②Visual Studio(简称VS)是Visual C++6.0的升级版,增加了很多新特性,支持了更多的语言,是Windows下的标准IDE,实际开发中大家也都在使用。不过VS有点庞大,安装包有2~3G,下载不便,而且会安装很多暂时用不到的工具,安装时间在半个小时左右。
为了适应最新的Windows操作系统,微软每隔一段时间(一般是一两年)就会对VS进行升级。VS的不同版本以发布年份命名,例如VS2010是微软于2010年发布的,VS2017是微软于2017年发布的。
③Dev C++是一款免费开源的C/C++IDE,内嵌GCC编译器(GCC编译器的Windows移植版),是NOI、NOIP等比赛的指定工具。Dev C++的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。
NOI是National Olympiad in Informatics的缩写,译为“全国青少年信息学奥林匹克竞赛”;NOIP是National Olympiad in informatics in Provinces的缩写,译为“全国青少年信息学奥林匹克联赛”。
NOI、NOIP都是奥林匹克竞赛的一种,参加者多为高中生,获奖者将被保送到名牌大学或者得到高考加分资格。
④C-Free是一款国产的Windows下的C/C++IDE,最新版本是5.0,整个软件才14M,非常轻巧,安装也简单,界面也比Dev C++漂亮。C-Free的缺点也是调试功能弱。
可惜的是,C-Free已经多年不更新了,组件都老了,只能在XP、Win7下运行,在Win8、Win10下可能会存在兼容性问题,所以我才重点推荐Dev C++,否则我会更加倾向于C-Free。
本教程的目录中只列出了VS2010、VS2015、Dev C++的安装和使用,希望尝试C-Free和VC6.0读者请猛击《在C-Free下运行C语言程序》《在VC6.0下运行C语言程序》。
2、Linux:
在Linux下使用GCC(GNU Compiler Collection,GNU编译器套件)。GCC是GUN组织开发的自由软件,除了支持C,还支持C++、Java、Objective-C等,它是Linux平台编译器的事实标准。
3、Mac OS X:
在Mac OS X下使用Xcode。Xcode是由Apple官方开发的IDE,支持C、C++、Objective-C、Swift等,可以用来开发Mac OS X和iOS上的应用程序。
Xcode最初使用GCC作为编译器,后来由于GCC的不配合,改用LLVM/Clang。虽然C语言的IDE众多,但是C语言的绝大部分内容在各个IDE下都是通用的。