天天看點

MACOS+win10手動編譯synergy及遇到的一些問題

Synergy, 就是一個能多台電腦共享的滑鼠和鍵盤的軟體,從官網上下載下傳還要購買,github上有源碼,自己下載下傳源碼,編譯就可以了,下面說說流程以及安裝過程中遇到的各種問題。

先貼上Synergy的github網址:https://github.com/symless/synergy-core

MAC端編譯:

按照readme的Getting Started,下載下傳源碼,編譯的時候使用的是master分支,之後到Compiling頁面,按照MACOS的環境配置完成,1.安裝XCode,2.brew install Qt,3.brew install cmake libsodium,4.brew install [email protected],5.按照MACOS端指令行編譯的方式進行編譯,唯一不同的是,QT_PATH=/usr/local/Cellar/qt/5.13.0(當時brew安裝的QT就是這個版本的).之後就一切順利。

Windows10(系統版本:10.0.17134.915)端編譯(個人感覺及其麻煩):

按照readme的Getting Started,下載下傳源碼,同樣使用master分支,之後到Compiling頁面,按照Windows的配置下載下傳一波,然後配置一遍。如果是用cmake的GUI配置的話,可以參考https://blog.csdn.net/xj178926426/article/details/83005315這篇文章,但是我還是建議使用指令行進行編譯。

下面說說編譯過程中遇到的問題。

問題一:在cmake編譯的時候出現如下問題。

CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: DNSSD_LIB     linked by target "synergy" in directory E:/Git/code/synergy-core/src/gui

這是因為在我們的synergy-core/src/gui/CMakeLists檔案中使用了DNSSD_LIB這個變量,但是其中沒有定義,需要我們自己定義,但是DNSSD_LIB這個檔案是什麼?就在我們下載下傳的Bonjour SDK for Windows v3.0這個程式安裝後的檔案夾中,找到安裝路徑上名為Bonjour SDK的檔案夾,之後到\Lib\x64下面能看到兩個檔案,将這兩個檔案copy到\synergy-core\src\gui路徑下面,之後打開CMakeLists檔案,在target_link_libraries (synergy shared)後面,添加指令

set(DNSSD_LIB "E:\\Git\\code\\synergy-core\\src\\gui\\dnssd.lib")
           

使用set指令設定一下DNSSD_LIb這個變量的位址就行了,說明:這個位址是本機這個檔案的存放位址,根據自己機子的位址進行修改,多加\,因為要轉義一下。儲存退出,之後再編譯就沒有這個問題了。

問題二:可能會出現沒有頭檔案,什麼符号無法解析等

将上面說的Bonjour SDK\Include檔案夾中的dns_sd頭檔案放到synergy-core/src/gui/src目錄下面,重新編譯就可以了。

問題三:使用GUI進行編譯可能會出現各種各樣的問題,例如沒有權限讀取某檔案,生成某個檔案出錯等,建議使用指令行進行編譯。

問題四:運作build之後生成的檔案夾中的/bin下面的Debug目錄下面的synergy.exe檔案,會說明少很多.dll檔案庫,按照github上面的Compiling頁面,有些到如何進行解決。

問題五:運作軟體時顯示0xc000007b,這個問題應該是某些庫缺少或者放置的不對的原因,github的issue給的解決方案是将QT中所有的.dll檔案都拷貝到檔案夾下面,我并沒有使用這種方式。我使用了一個軟體http://www.dependencywalker.com這個網址下面的軟體,它可以分析exe檔案的依賴關系。下載下傳下來,并運作,點選file,open,打開synergy.exe檔案,進行分析,

MACOS+win10手動編譯synergy及遇到的一些問題

将所有的展開都關上就會看到這樣的圖檔,如果會出現0xc000007b這樣的問題的話,最後兩個.dll顯示的應該是紅色的,之後在Qt的主目錄下面,查找這兩個相同名稱的.dll放到與synergy.exe相同目錄下,0xc000007b就會消失。Qt的主目錄下面會有許多相同名稱的.dll檔案,我當時挑選的是mingw730_64目錄下面的同名.dll檔案。

問題六:任務管理器裡面沒有synergy service服務(ipc connection error)

用管理者權限打開指令行,之後使用sc指令建立服務,指令為

sc create synergy binpath= "your\software\synergy-core\bin\Debug\synergyd"
           

注意=後面有個空格,之後再打開任務管理器,找到synergy,右鍵打開服務,應該就可以了,如果自啟的話,點開任務管理器最下面的打開服務,找到synergy,右鍵屬性,在正常一欄的啟動類型改為自動就可以了。

問題七:(ipc connection error)

當時解決這個問題的時候,還有一部分操作,就是可能防火牆的問題,進入防火牆的進階設定,在入站規則和出站規則中,分别加入兩個關于synergy的規則,也就是四個規則,分别是關于24800端口的,還有一個就是關于synergy這個應用程式的,之後儲存,重新開機,以後即使打開防火牆也不會有連不上的問題了。

繼續閱讀