政府網(wǎng)站建設(shè)的創(chuàng)新機(jī)制企業(yè)網(wǎng)絡(luò)營銷
文章目錄
- ABY的搭建以及使用
- 前言
- ABY庫的下載、安裝及測試
- CLion配置
- 后續(xù)
- 雜項
- 項目改名
- 使用其他的庫
- 最后
ABY的搭建以及使用
前言
- 僅做記錄,僅供參考,不同人有不同的使用方式
- 命令手敲,可能有錯,自己辨識
- 勿問,我懂的也不多,瞎搞的
ABY庫的下載、安裝及測試
- Github 官網(wǎng)
- APT安裝跳過
- 推薦遞歸下載,下載后備份這個庫,以防后面搞爛
git clone --recursive https://github.com/encryptogroup/ABY.git cp -r ABY ABY_bak
- 編譯及安裝(推薦安裝到非標(biāo)準(zhǔn)位置)
cd ABY mkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX="" make mkdir /usr/local/ABY make DESTDIR=/usr/local/ABY install
- 源碼編譯運行后有點問題需要修改,cmake_constants.h is not found #197,參考:配置OPPRF-PSI密碼學(xué)協(xié)議
- 安裝后在
/usr/local/ABY
里有庫文件啥的,但是make install安裝后,再編譯運行自己的程序或者樣例程序就總報各種錯,什么找不到relic啦之類的。所以我把/usr/local/ABY
備份后刪掉了,其實只是要里面的include
目錄而已。zip -r ABY_include.zip /usr/local/ABY/include # 因為后面要在Windows下使用,用zip打包方便一點(而且我也不熟tar命令...) sz ABY_include.zip # 可能需要安裝lrzsz: apt install lrzsz(用xftp當(dāng)我沒說)# 改名或備份 mv /usr/local/ABY /usr/local/ABY_bak rm -rf /usr/local/ABY (要備份就備份吧,我備份了后面好像沒什么用,初配建議還是備個份,推薦改名)
- 回到
ABY/build
,清空build里的東西:rm -rf ./*
- 測試(測不測由你,建議測測,熟悉下流程)
- 返回
ABY
,修改CMakeList.txt: - 刪掉最后的ABY_BUILDE_EXE,待會重新寫一個
- 刪掉開頭這個option(可選,刪不刪無所謂,反正用不到)
- 在最后添加子目錄,用于測試(測不測隨你)
add_subdirectory(src/ABY_TEST)
- 你現(xiàn)在應(yīng)該在
ABY
目錄下,在src
內(nèi)有測試樣例,但是很多,選一個出來測試。mkdir src/ABY_TEST cp -r src/examples/millionaire_prob/ src/ABY_TEST # 把百萬富翁的樣例copy出來
- 由于路徑比之前樣例里的百萬富翁的樣例少了一層目錄,所以里面的
cpp
和.h
文件里的include路徑需要少掉一層../
,自己改就行,記得common
路徑里也有代碼,也需要改
- 直接在ABY目錄下編譯運行
cmake . make
- 順利的話在bin目錄內(nèi)就能看到可執(zhí)行文件,能跑通就算成功
- 返回
- 現(xiàn)在整個ABY目錄下就算搭建好的框架了,建議在這里面做工作
CLion配置
- CLion掛載到ABY目錄,改下Mapping
- 在CLion下測試,可以把百萬富翁那個樣例拉出來測試,同樣注意路徑問題,CMakeList自行修改,給個參考:
- 跑通就算成功
- 提一嘴,百萬富翁這個例子需要輸入?yún)?shù),并且需要兩個終端運行,CLion可以在配置出修改
后續(xù)
- 到這里雖然程序跑通了,但是CLion沒辦法獲取到ABY庫的信息,代碼處都是報紅。之前試過,如果安裝ABY庫,也就是前面提到的安裝到
/usr/local/ABY
,安裝后CLion可以檢索到ABY庫,include不報錯,代碼不報紅了,但是!跑不通了,程序運行的時候提示找不到那些package。 - 權(quán)衡利弊,我最終選用的解決方案是,ABY庫安裝后從云端拉到本地,然后云端的ABY庫刪掉,這樣程序就能順利運行了。然后把下載到本地的ABY庫里的include里的文件拷貝到項目下,然后把
include <>
的部分換成include ""
,這樣代碼就不會報錯,程序也能正常運行。
- 再提一嘴,把ABY的include里的文件拷貝到項目內(nèi)后,可以設(shè)置這幾個目錄不同步到云端。還是在Deployment處,前面在Mapping設(shè)置過掛載的路徑,在這里可以設(shè)置Excluded Paths
雜項
項目改名
- CMakeList里
project()
可以修改項目名,原本是ABY,如果要改名的話,注意,在cmake路徑下有一個文件:ABYConfig.cmake.in
,如果只修改項目名的話,會報錯找不到cmake.in文件,需要把ABYConfig.cmake.in
文件改名為你的項目名Config.cmake.in
使用其他的庫
- 建議在ABY里面的CMakeList上改,加一些
find_package()
、add_executable()
和target_link_libraries()
應(yīng)該是沒什么問題的 - 如果有其他的,建議一條一條加,加完cmake編譯一下看看有沒有問題,在保證使用其他庫后也能用的情況下,能少加就少加,不然可能不兼容(血的教訓(xùn)),具體得自己去排雷
- 下面這句是沒問題的:
- 下面這句就出問題了:
最后
- 最終效果就是,Clion上代碼顯示正常,無報錯,調(diào)試和運行也能在云端正常運行
- 搭這玩意花了我兩天,建議新手學(xué)下CMakeList,還得熟悉Clion與Docker的連接部署等操作,參考我的上一篇博客:Clion連接Docker,使用HElib庫
- 搭了兩天后的記錄,可能不太全面,只提供了大致的思路,細(xì)節(jié)方面需要自己去琢磨與嘗試
- 遇到其他問題也歡迎與我交流,看到就會回,不過每個人的需求不同,根據(jù)自己的需求搭環(huán)境