『壹』 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下都是通用的。