编译
emqx-3.2.8编译
wget 下载东西报证书错误
mysql编译
pika在arm环境编译
kibana-6.8.4编译
elasticsearch-6.8.4编译
logstash 6.8.4 编译
-
+
首页
pika在arm环境编译
## pika在arm环境编译 - what: pika在arm环境编译 - where: centos8 aarch64 - when: 2022.1.4 - who: 无名 - why: 记录 - how: - release: 3.6.6 ### 1.安装依赖 ```bash yum -y install epel-release yum install gcc-c++ gcc make cmake vim wget git which -y dnf --enablerepo=powertools install glog-devel -y dnf --enablerepo=powertools install snappy-devel -y yum -y install gflags-devel yum install -y diffutils dnf --enablerepo=powertools install protobuf-devel yum install rsync -y ``` ### 2.组件编译 #### 2.1 下载源码 ```bash [root@3d852ecb608f /]# cd /usr/local/ [root@3d852ecb608f local]# ls bin etc games include lib lib64 libexec sbin share src [root@3d852ecb608f local]# git clone https://github.com/OpenAtomFoundation/pika.git && cd pika Cloning into 'pika'... remote: Enumerating objects: 11217, done. remote: Counting objects: 100% (266/266), done. remote: Compressing objects: 100% (214/214), done. remote: Total 11217 (delta 77), reused 127 (delta 49), pack-reused 10951 Receiving objects: 100% (11217/11217), 84.52 MiB | 17.43 MiB/s, done. Resolving deltas: 100% (8138/8138), done. [root@3d852ecb608f pika]# ``` #### 2.2 切换版本 ```bash [root@3d852ecb608f pika]# git checkout v3.3.6 Note: switching to 'v3.3.6'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c <new-branch-name> Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 9e74c8c vsersion 3.3.6 [root@3d852ecb608f pika]# ``` #### 2.3初始化 初始化依赖外网,最好挂vpn ``` [root@3d852ecb608f pika]# git submodule init Submodule 'third/blackwidow' (https://github.com/Qihoo360/blackwidow.git) registered for path 'third/blackwidow' Submodule 'third/glog' (https://github.com/Qihoo360/glog.git) registered for path 'third/glog' Submodule 'third/pink' (https://github.com/Qihoo360/pink.git) registered for path 'third/pink' Submodule 'third/rocksdb' (https://github.com/facebook/rocksdb.git) registered for path 'third/rocksdb' Submodule 'third/slash' (https://github.com/Qihoo360/slash.git) registered for path 'third/slash' [root@3d852ecb608f pika]# git submodule update Cloning into '/usr/local/pika/third/blackwidow'... Cloning into '/usr/local/pika/third/glog'... Cloning into '/usr/local/pika/third/pink'... Cloning into '/usr/local/pika/third/rocksdb'... Cloning into '/usr/local/pika/third/slash'... Submodule path 'third/blackwidow': checked out '7565ce9f09f9528b90984feefe6ad850bf87fe90' Submodule path 'third/glog': checked out 'ecdbd7cda69e1ff304ac02f7f277715a162e1474' Submodule path 'third/pink': checked out 'fb34df9c885a12ac2f31a19760e93e451ffc4714' Submodule path 'third/rocksdb': checked out '004237e62790320d8e630456cbeb6f4a1f3579c2' Submodule path 'third/slash': checked out 'c1315c0d5ed2a60b21cc1db4b9f29ee833e7d2a3' ``` #### 2.4 编译 ```bash PORTABLE=1 make ``` 日志 ```bash /usr/local/pika/src/pika_admin.cc: In member function ‘void InfoCmd::InfoReplication(std::__cxx11::string&)’: /usr/local/pika/src/pika_admin.cc:964:7: warning: this statement may fall through [-Wimplicit-fallthrough] if (!all_partition_sync) { ^~ /usr/local/pika/src/pika_admin.cc:967:5: note: here case PIKA_ROLE_SINGLE : ^~~~ CC pika_repl_bgworker.o CC pika_zset.o CC pika_repl_client_thread.o CC pika_slave_node.o CCLD pika ``` ### 3.启动 ```bash [root@3d852ecb608f pika]# ./output/bin/pika -c ./conf/pika.conf ``` ### 4.问题解决 #### 4.1问题一: 问题1:使用PORTABLE=1 make编译报如下错: ```bash make[1]: Entering directory `/jrt/pika/third/slash/slash' g++: error: unrecognized command line option '-msse' g++: error: unrecognized command line option '-msse4.2' g++: error: unrecognized command line option '-msse' g++: error: unrecognized command line option '-msse4.2' g++: error: unrecognized command line option '-msse' g++: error: unrecognized command line option '-msse4.2' g++: error: unrecognized command line option '-msse' g++: error: unrecognized command line option '-msse4.2' g++: error: unrecognized command line option '-msse' g++: error: unrecognized command line option '-msse4.2' g++: error: unrecognized command line option '-msse' ``` 问题解决 ```bash -msse -msse4.2是x86专属的识别硬件参数,arm没有,利用grep -r msse找到所有带这个参数的文本,进入文本删除该两个参数,若语法中引号中只有该参数,删除该参数时并删除引号 [root@598939ec6129 pika]# grep -r msse Makefile:PLATFORM_CXXFLAGS= -std=c++11 -fno-builtin-memcmp -msse -msse4.2 third/blackwidow/benchmark/Makefile:CXXFLAGS=-O2 -std=c++11 -fno-builtin-memcmp -msse -msse4.2 third/blackwidow/tests/Makefile:CXXFLAGS= -g -std=c++11 -fno-builtin-memcmp -msse -msse4.2 third/blackwidow/Makefile:CXXFLAGS= -g -std=c++11 -fno-builtin-memcmp -msse -msse4.2 -pipe -fPIC third/blackwidow/examples/Makefile:CXXFLAGS=-O2 -std=c++11 -fno-builtin-memcmp -mss -msse4.2 third/rocksdb/build_tools/build_detect_platform: COMMON_FLAGS="$COMMON_FLAGS -msse4.2" third/rocksdb/CMakeLists.txt: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") third/rocksdb/CMakeLists.txt: set(CMAKE_REQUIRED_FLAGS "-msse4.2") third/rocksdb/CMakeLists.txt: PROPERTIES COMPILE_FLAGS "-msse4.2") third/pink/pink/Makefile:CXXFLAGS= -g -std=c++11 -fno-builtin-memcmp -msse -msse4.2 -pipe -fPIC third/pink/pink/examples/Makefile:CXXFLAGS=-O2 -std=c++11 -fno-builtin-memcmp -msse -msse4.2 third/slash/slash/Makefile:CXXFLAGS= -g -std=c++11 -fno-builtin-memcmp -msse -msse4.2 -pipe -fPIC third/slash/slash/examples/Makefile:CXXFLAGS= -O2 -std=c++11 -fno-builtin-memcmp -msse -msse4.2 [root@598939ec6129 pika]# ``` #### 4.2问题2: 问题2:使用PORTABLE=1 make编译报如下错: ```bash memtable/skiplistrep.cc:28:28: required from here ./memtable/inlineskiplist.h:282:11: error: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct std::atomic<rocksdb::InlineSkipList<const rocksdb::MemTableRep::KeyComparator&>::Node*>’ with no trivial copy-assignment [-Werror=class-memaccess] memcpy(&next_[0], &height, sizeof(int)); ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ./memtable/inlineskiplist.h:47, from memtable/skiplistrep.cc:6: /usr/include/c++/8/atomic:352:12: note: ‘struct std::atomic<rocksdb::InlineSkipList<const rocksdb::MemTableRep::KeyComparator&>::Node*>’ declared here struct atomic<_Tp*> ^~~~~~~~~~~~ CC monitoring/thread_status_updater.o CC monitoring/thread_status_updater_debug.o CC monitoring/thread_status_util.o CC monitoring/thread_status_util_debug.o CC options/cf_options.o cc1plus: all warnings being treated as errors make[1]: *** [Makefile:1809: memtable/skiplistrep.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: Leaving directory '/opt/pika/third/rocksdb' make: *** [Makefile:229: /opt/pika/third/rocksdb/librocksdb.a] Error 2 ``` 问题解决 ```bash #在inlineskiplist.h中约282行,StashHeight函数中增加(void*),具体见下文 vim /usr/local/pika/third/rocksdb/memtable/inlineskiplist.h void StashHeight(const int height) { assert(sizeof(int) <= sizeof(next_[0])); memcpy((void*)&next_[0], (void*)&height, sizeof(int)); } #参考链接:https://www.cnblogs.com/saikaimei/p/14396369.html ``` #### 4.3问题3: 问题3:执行./output/bin/pika -c ./conf/pika.conf启动服务时只是回显版本,服务未正常启动 问题解决: ```bash yum install rsync -y #进入pika代码主目录 src/pika.cc 约138行 char c 改为 signed char c PORTABLE=1 make ./output/bin/pika -c ./conf/pika.conf #查端口 yum install net-tools netstat -nltp ```
JRT
2022年1月11日 15:16
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码