编译指南
概述
- 本教程给出MacOS、CentOS、Ubuntu三个系统的编译指南
- 其中CentOS下安装gcc和cmake比较麻烦,网上也没有比较可靠的教程,所以在下文中给出了参考的安装方式
- 首先在每个系统给出CICD测试的系统版本、C & CXX 的编译版本、cmake版本、以及需要安装的依赖库
- 然后在
构建与测试中给出了构建和测试命令 - 在末尾还提供了在CentOS、Ubuntu系统下使用
clang编译gs的方法和注意事项 - 系统镜像文件地址\\m68gfs\技术中心\wurq\系统镜像
环境准备
- MacOs
- CentOS
- Rocky Linux 9.0
- Ubuntu
- CICD系统版本 : MacOS High Sierra 10.13
- C & CXX Compiler : AppleClang 10.0.0.10001044
- 推荐使用homebrew安装需要的库或工具
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- cmake --version >= 3.16
brew install --build-from-source cmake
- 以下是MacOS下需要安装的一些库
-
protobuf的构建 依赖autoconfautomakelibtoolbrew install autoconf
brew install --build-from-source automake
brew intsall libtool
-
- CICD系统 :CentOS 7.7
- C & CXX Compiler : gcc 5.4 / gcc 5.5
- cmake --version >= 3.16
因为CentOS下安装gcc和cmake比较复杂 以及可能出现的问题下文会给出教程
Centos需要修改网络配置文件,系统安装完成后cd /etc/sysconfig/network-scripts ,vi修改ipcf-e开头的文件,将ONBOOT内容改为"yes"后重启。
- 以下是CentOS下需要安装的一些库
-
mongoc的构建依赖opensslyum install -y openssl-devel
yum install -y readline-devel -
protobuf的构建依赖autoconfautomakelibtoolyum install -y autoconf
yum install -y automake
yum install -y libtool -
yum install -y mesa-libGLU-devel -
可安装可视化界面,并通过startx命令启动。
yum groupinstall "GNOME Desktop"
-
- CICD系统 :Rocky Linux 9.6 (Blue Onyx)
- C & CXX Compiler : gcc 11.5.0
- cmake --version >= 3.16
Rocky Linux 9的默认 gcc 版本为及cmake版本较高,一般情况下安装默认版本即可。
- 以下是rocky linux9下需要安装的一些库
-
mongoc的构建依赖openssldnf install openssl-devel
dnf install readline-devel -
protobuf的构建依赖autoconfautomakelibtooldnf install autoconf
dnf install automake
dnf install libtool -
gs的构建或运行依赖dnf install zlib-devel
dnf install gcc-c++ make cmake
dnf install cmake
-
- CICD系统 :Ubuntu 16.04.4
- C & CXX Compiler : gcc 5.3 / gcc 5.4
- cmake --version >= 3.16
Ubuntu 和 CentOS都是Linux,所以cmake的安装方式基本一致,下载链接可用同一个,详见CentOS在下文中给出的安装教程
- 以下是Ubuntu下需要安装的一些库
-
mongoc的构建依赖opensslapt-get install openssl
apt-get install libssl-dev -
apt-get install -y libreadline-dev -
protobuf的构建依赖autoconfautomakelibtoolapt-get install autoconf
apt-get install automake
apt-get install libtool -
apt-get install libglu1-mesa-dev
-
构建与测试
手动调用cicd文件夹中的脚本进行构建与测试
参见 CICD流程中的说明
例如,在Linux中:
-
构建命令
cd cicd
chmod +x ./build_cmake.sh
./build_cmake.sh $1 $2
# $1 参数为 debug / release
# $2 表示是否完整编译三方库
# 如: ./build_cmake.sh release 1 -
测试命令
cd cicd
chmod +x ./install_pkgs.sh
./install_pkgs.sh $1
chmod +x ./test.sh
./test.sh $1 $2
# $1 参数为 debug / release
# $2 为运行参数 如 "/s 5 /D TEST_ROUND=1"
# ./test.sh release "/s 5 /D TEST_ROUND=1"
使用build文件夹中的脚本构建
在gs工程的build文件夹下也有用于构建的脚本,不同于cicd中的是,build_all.bat和build_all.sh根据第二个传入的参数可以下载所有相关pkgs的源码进行编译并生成适用于当前操作系统、架构的动态库文件,保证测试用例可以正常通过验证。
参数说明,以Linux为例:
cd build
./build_all.sh $1 $2
# $1 编译类型: debug/release等
# $2 是否下载所有pkg源码并编译
# 1. 下载并编译(原pkgs中的各pkg会替换为源码中src的软链接)
# 2. 不下载,等效于上文中cicd的build_cmake+install_pkgs
使用build_all会编译所有pkgs源码,耗时较久,而若只想编译一个或几个特定pkgs的源码就不太方便,这种情况可以使用脚本install_pkg_source.bat和install_pkg_source.sh下载特定的pkg源码:
./install_pkg_source.sh $1 $2 $3
# $1 具体pkg名称 或 all(所有pkgs)
# $2 已编译好的driver的版本: debug/release
# $3 是否执行pkg的build批处理
某些pkg需要准备编译环境
必须先编译过gs生成相应的debug或release版的driver