seastar:git clone
dpdk: git clone
c-ares: git clone
fmt:git clone
找到目標原始碼合適版本是編譯嘗試出來的,採用編譯錯誤版本最少的乙個版本。
這裡找到的版本是:seastar-18.08-branch
git branch -a
git checkout seastar-18.08-branch
具體依賴包的版本號:
把依賴包切換到對應的版本,以fmt為例。
#切換到fmt目錄執行如下命令:
git log | grep fd6124c
git checkout fd6124c74da0801f23f9d324559d8b66fb83f533
# 注意 dpdk 要切換到 git checkout local-17.05,才能找 a1774652
# 注意2 子模組更新的通常命令如下:
## git submodule update --init --recursive
git clone
# 編譯ninja
./configure.py --bootstrap
# 拷貝到/usr/bin/或者/usr/local/bin/目錄下
cp ninja /usr/bin/
# . 編譯ninja警告解決
warning: a compatible version of re2c (>= 0.11.3) was not found; changes to src/*.in.cc will not affect your build.
## 編譯re2c
tar -xvzf re2c-2.0.3.tar.gz
cd re2c-2.0.3/
./autogen.sh
./configure
make
make install
# 1.1 在re2c中執行:./autogen.sh: 報行47: autoreconf: 未找到命令.執行下面的命令:
yum -y install autoconf automake libtool
然後在編譯re2c
# re3c編譯安裝成功後,重新新編譯安裝ninja
注意:#### 把ninja拷貝到/usr/bin/目錄中後,執行ninja不正常,設定執行ninja命令的當前目錄中缺少build.ninja檔案,不是安裝異常。0. boost, boost-devel (1.58以上), cmake, ninja
1. gnutls-devel
2. hwloc-devel
3. numactl-devel
4. protobuf protobuf-devel
5. ragel
6. yaml-cpp, yaml-cpp-devel
7. xfsprogs, xfsprogs-devel
8. lksctp-tools lksctp-tools-devel
9. lz4, lz4-devel
10. libpciaccess, libpciaccess-devel
11. libxml2, libxml2-devel
git clone
# 執行make
make && make intall
# 不使用make編譯安裝,使用rpm 打包安裝
參考:
# -j 後面的引數可選
./configure.py --compiler=g++ --static-stdc++
ninja -j 2 release
# seastar通過rpm打包
seastar與go的http效能差異
golang的coroutine好用,但是coroutine本身切換是需要有代價的,主要體現在記憶體棧的上下文切換。之前看過乙個c 的go風格的庫,叫libgo,根據其github主頁的benchmark,協程切換速率是要優於go的。但是這篇文章並非要和libgo比較,由於筆者之前接觸過scylla...
前端雜燴 在工作,在思考,在沉澱
當我們沉浸在旺盛的需求之中時,整個人便會成為一台工作的機器,切著類似的頁面,寫著同樣的邏輯,重複著昨天或者上個月做的事情,時間久了,覺得膩味,沒有什麼創新,也沒有明顯的成長。用一句通俗的話來講 工作五年,後面四年重複著第一年的活兒。很多人嘗試跳出這個怪圈,不過基於環境壓力和思維受阻,最後又不得不選擇...
前端雜燴 在工作,在思考,在沉澱
當我們沉浸在旺盛的需求之中時,整個人便會成為一台工作的機器,切著類似的頁面,寫著同樣的邏輯,重複著昨天或者上個月做的事情,時間久了,覺得膩味,沒有什麼創新,也沒有明顯的成長。用一句通俗的話來講 工作五年,後面四年重複著第一年的活兒。很多人嘗試跳出這個怪圈,不過基於環境壓力和思維受阻,最後又不得不選擇...