-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
静态编译pika #1148
Comments
编译 pika0 准备需要软件 centos7.x gcc4.8 g++4.8 git cmake 使用make 编译的时候, 使用 make -jN (N=cpu核数 加快编译速度) 1 安装工具
2 解决rocksdb依赖,安装必备的库rocksdb 依赖库snappy gflags zlib bzip2 stdc++ lz4 zstd lzma 这些库都要安装 为了能静态编译,这些库都要安装静态库
在pika3.3.X版本中, 一定要用 snappy 1.1.0的库
编译 动态库
编译 静态库
我没有找到同时编译动态库和静态库的方法,只能分开编译了
最后, 所有的库都安装好后,把库加到 ld 目录中。因为有的库会安装到 /usr/local/lib64 目录下,但是有的系统没有把这个目录加到动态库搜索目录中, 解决办法
执行 安装 protobuf编译 protobuf, 用cmake编译 protobuf release 地址 https://github.com/protocolbuffers/protobuf/releases xx.XX.XX 是版本号,需要下载3.X版本的
protobuf 也要安装静态库 到这 protobuf 安装完成 3 拉代码拉 pika 代码 github https://github.com/OpenAtomFoundation/pika
cd pika 源码目录
4 编译预先编译预先编译一次 glog 和 rocksdb, 因为这两个库直接用 pika 的 MakeFile 编译容易出问题,先预编译一下
rocksdb编译完不需要安装,只需要复制一下静态库就好 使用cmake构建 cmake 需要 cmake3, cmake命令如下
把编译后的 librocksdb.a 复制到 rocksdb 的根目录 正常编译按照官方给的文档编译即可, 执行 等待拉各个依赖模块的代码 然后自动编译 前期工作做好,编译中应该不会出错 检查编译是否正确 后续编译完成后,这个可执行文件有很多 .so的依赖, 可移植比较差, 通过 脚本编译一个依赖较少的.so文件 执行 link_3_3_path-master.sh 脚本等待完成链接 编译完成
静态链接脚本
-Wl,-Bstatic 后面的是要 静态链接 的库 -Wl,-Bdynamic 后面的是要 动态链 接的库 |
为了减少物理环境依赖包冲突和安装的繁琐,一些同学会尝试静态编译pika。以下是360静态打包脚本。核心思想是分别编译依赖库的静态包,然后再链接到一起。
依赖库:
gflags-v1.3.tar.gz
gperftools-2.7.tar.gz
libunwind-v1.1.zip
snappy-1.1.0.tar.gz
编译脚本:
pika 3.3.X静态连接脚本:
The text was updated successfully, but these errors were encountered: