mportant;"> | /WireGuard/src/socket.c: In function ‘socket_init’: /WireGuard/src/socket.c:343: error: unknown field ‘local_ip’ specified in initializer |
在更换高版本GCC编译后成功,但是发现无法加载wireguard.ko内核,dmesg查看后发现如下报错
| wireguard: loading out-of-tree module taints kernel. wireguard: Unknown symbol __fentry__ (err 0) |
经过研究WireGuard的官方邮件列表中他人的报错后终于发现了一个蛋疼的问题,就是如果内核使用了低版本GCC编译,那么程序必须也要低版本,但是程序默认无法通过低版本编译,需要修改代码。所以最好就是全部高版本。这儿主要还是因为内核用的是我自己的修改版,如果是官方版本的话……也许不会有问题?
具体可以查看邮件列表对话——>传送门
官方提供了一种把WireGuard直接patch到内核中的玩法,如下
| cd /path/to/kernel/source/code /path/to/wireguard/contrib/kernel-tree/create-patch.sh | patch -p1 |
然后会多两个内核参数,可以自行调整
| CONFIG_WIREGUARD CONFIG_WIREGUARD_DEBUG |
但是我想了下还是不推荐这个方法,因为WireGuard目前还是比较频繁更新的,做到内核里不利于更新,以后稳定了或许不错
PS.总结一下,两个注意点
①.内核需要高版本GCC编译,且大于3.10版本
②.代码需要高版本GCC编译,使用前通过lsmod确认模块已经加载
三.使用方法
这部分不介绍了,官方真的详细,还有手把手动画演示以及测试服务器,命令全帮你写好了,照瓢画葫就行_(:з」∠)_ ——>传送门
打赏支付宝微信扫一扫,打赏作者吧~
本文链接:https://www.kinber.cn/post/1056.html 转载需授权!
推荐本站淘宝优惠价购买喜欢的宝贝:
您阅读本篇文章共花了: