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 openssl@1.1,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文件,进行分析,

将所有的展开都关上就会看到这样的图片,如果会出现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这个应用程序的,之后保存,重启,以后即使打开防火墙也不会有连不上的问题了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值