一、Cygwin的安装
1.Cygwin
Cygwin是一个在Windows平台上运行的类UNIX模拟环境,它是一个开源的免费软件,由Cygnus Solutions公司开发。Cygwin通过提供一个名为cygwin1.dll的动态链接库,实现了在Windows上运行Unix应用程序的功能。这个DLL拦截并重定向Unix系统调用,将其转换为Windows本机API调用,从而在Windows上模拟了一个类Unix的环境。
2.安装包
链接:https://pan.quark.cn/s/b2845be6952a
3.勾选【从互联网安装】,然后点击【下一页(N)】
4.在任意盘创建名称 cygwin64 的文件夹
5.回到软件安装界面,点击【浏览】及进行选择
6.勾选【直接连接(D)】,然后点击【下一页(N)】
7.选择自定义镜像网站
推荐阿里云开源镜像(cygwin安装包下载_开源镜像站-阿里云)
选中镜像网站后,点击【下一页(N)】
8.点击【ALL】前面的加号按钮
选择Devel->下拉框选择binutils-2.41-3
然后依次找到【gcc-coreh】和【gcc-g++】选择任意版本(11.5.0-1)
找到【gdb】,选择10.0以上较新版本(13.2-1)
【mingw64-i686-gcc-core】和【mingw64-i686-gcc-g++】11.4.0.1
点击下一页等待安装完成
二、coturn安装
需要安装以下组件(必须)
1.安装openssl
2.libevent
3.安装gcc
4.安装make
然后下一步直至完成
5.下载Coturn
GitHub地址:coturn/coturn: coturn TURN server project (github.com)
下载完解压后拷贝到D:ENVCygwinin
如无法访问可直接访问(https://codeload.github.com/coturn/coturn/zip/4.5.0.4)下载
6.编译Coturn
打开Cygwin的安装目录,有一个Cygwin.bat批处理,双击打开
进入coturn目录
执行cd /bin/coturn
执行./configure
结尾出现success 说明到这一步没问题,继续
执行make
执行make install
目录下会出现一个bin文件夹,进入后会看到turnserver.exe
从usr/local/etc目录将turnserver.conf.default文件拷贝过来,并修改文件名去掉default
配置turnserver.conf生成签名pem文件
relay-device=eth0
listening-ip=内网ip
listening-port=3478
tls-listening-port=5349
relay-ip=内网ip
external-ip=公网ip
relay-threads=50
lt-cred-mech
min-port=49152
max-port=65535
cert=/bin/coturn/bin/turn_server_cert.pem
pkey=/bin/coturn/bin/turn_server_pkey.pem
pidfile=/var/run/turnserver.pid
user=admin:123456
cli-password=123456
3.生成签名pem文件
openssl req -x509 -newkey rsa:2048 -keyout /bin/coturn/bin/turn_server_pkey.pem -out /bin/coturn/bin/turn_server_cert.pem -days 99999 -nodes
此时在coturn的bin目录下就会生成turn_server_cert.pem和turn_server_pkey.pem文件
开始运行
turnserver -o -a -f -c /usr/bin/coturn/bin/turnserver.conf -r sdo.com
查看本机的3478端口是否被监听
4.webrtc-streamer启动命令:
webrtc-streamer.exe -o -H 内网ip:8000 -S公网ip:公网端口 -Tadmin:123456@公网ip:公网端口
5.启动
7.可能遇到的问题
1.src/apps/common/ns_turn_utils.c:53:10: 致命错误:sys/syscall.h:No such file or directory 53 | #include <sys/syscall.h>
当你在使用 Cygwin64 在 Windows 上编译代码时遇到 src/apps/common/ns_turn_utils.c:53:10: 致命错误:sys/syscall.h:No such file or directory
错误,这通常是因为 sys/syscall.h
文件在 Cygwin 环境中不存在或者相关的开发包没有安装
解决办法
如果你确定代码需要使用 sys/syscall.h
中的功能,并且无法找到跨平台的替代方案,你可以通过条件编译来实现跨平台兼容性。
#ifdef __linux__
#include <sys/syscall.h>
#endif
这样,只有在 Linux 系统上编译时才会包含 sys/syscall.h
头文件,在 Windows 系统上编译时会忽略该头文件。
# 进入 coturn 源码目录
cd /path/to/coturn/source
# 清除之前的配置
make clean
# 重新配置
./configure
# 编译并安装
make
make install
2.openssl req -x509 -newkey rsa:2048 -keyout /bin/coturn/bin/turn_server_pkey.pem -out /bin/coturn/bin/turn_server_cert.pem -days 99999 -nodes Can't open "/etc/pki/tls/openssl.cnf" for reading, No such file or directory 100000000A000000:error:80000002:system library:BIO_new_file:No such file or directory:crypto/bio/bss_file.c:67:calling fopen(/etc/pki/tls/openssl.cnf, r) 100000000A000000:error:10000080:BIO routines:BIO_new_file:no such file:crypto/bio/bss_file.c:75:
解决办法
通过 -config
选项手动指定 OpenSSL 配置文件的路径。在 Cygwin 中,OpenSSL 配置文件通常位于 /usr/ssl/openssl.cnf
或者 /etc/ssl/openssl.cnf
。你可以使用以下命令来生成 PEM 文件,并指定配置文件的路径:
openssl req -x509 -newkey rsa:2048 -keyout /bin/coturn/bin/turn_server_pkey.pem -out /bin/coturn/bin/turn_server_cert.pem -days 99999 -nodes -config /usr/ssl/openssl.cnf
如果 /usr/ssl/openssl.cnf
不存在,你可以尝试使用 /etc/ssl/openssl.cnf
:
openssl req -x509 -newkey rsa:2048 -keyout /bin/coturn/bin/turn_server_pkey.pem -out /bin/coturn/bin/turn_server_cert.pem -days 99999 -nodes -config /etc/ssl/openssl.cnf
如若找不到 可以进行自行查找并确认 OpenSSL 配置文件位置
可以使用以下命令在 Cygwin 环境中查找 openssl.cnf
文件的位置:
find / -name "openssl.cnf" 2>/dev/null
该命令会在整个文件系统中搜索 openssl.cnf
文件,并将错误信息重定向到 /dev/null
以避免显示不必要的错误。找到文件后,使用 -config
选项指定其路径来生成 PEM 文件。
然后将-config 替换掉之前 -config后的路径
openssl req -x509 -newkey rsa:2048 -keyout /bin/coturn/bin/turn_server_pkey.pem -out /bin/coturn/bin/turn_server_cert.pem -days 99999 -nodes -config /path/to/openssl.cnf
三、验证Cygwin安装是否成功
1.右键以管理员身份打开【Cygwin.bat】
2.在弹出的命令窗口输入
cygcheck -c cygwin
成功安装