寻宝人2339 发表于 2023/12/6 22:03

尝试编译有http3 h3quic的kangle3.6报和pcre有关的错误

尝试编译有http3 h3quic的kangle3.6报和pcre有关的错误

/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::~KReg()':
KReg.cpp:(.text+0xed): undefined reference to `pcre_free'
/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::isPartialModel()':
KReg.cpp:(.text+0x28c): undefined reference to `pcre_fullinfo'
/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::setModel(char const*, int, int)':
KReg.cpp:(.text+0x33f): undefined reference to `pcre_free'
/usr/bin/ld: KReg.cpp:(.text+0x396): undefined reference to `pcre_compile'
/usr/bin/ld: KReg.cpp:(.text+0x3e5): undefined reference to `pcre_study'
/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::matchPartial(char const*, int, int, int*, int, int*, int)':
KReg.cpp:(.text+0x649): undefined reference to `pcre_dfa_exec'
/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::matchNext(char const*, int, int, int*, int, int*, int)':
KReg.cpp:(.text+0x6b3): undefined reference to `pcre_dfa_exec'
/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::match(char const*, int, int, int*, int)':
KReg.cpp:(.text+0x7a2): undefined reference to `pcre_exec'
/usr/bin/ld: CMakeFiles/kangle.dir/src/KReg.cpp.o: in function `KReg::freeStudy(pcre_extra*)':
KReg.cpp:(.text._ZN4KReg9freeStudyEP10pcre_extra+0x18): undefined reference to `pcre_free_study'
/usr/bin/ld: CMakeFiles/kangle.dir/src/main.cpp.o: in function `Usage(bool)':
main.cpp:(.text+0x12fa): undefined reference to `pcre_version'
collect2: error: ld returned 1 exit status
make: *** Error 1
make: *** Error 2
make: *** Error 2

按照官方的步骤make之后就这样,在网上搜了一圈,试了好多还是解决不了。不知道哪里出了问题。。系统是ubuntu

小樱 发表于 2023/12/7 00:03

如果缺少任何依赖的开发运行库,则编译器会给出Undefined reference

https://github.com/keengo99/kangle/issues/new
和官方汇报下试试?说明ubuntu具体版本号和贴上错误信息

寻宝人2339 发表于 2023/12/7 12:18

本帖最后由 寻宝人2339 于 2023/12/7 12:21 编辑

小樱 发表于 2023/12/7 00:03
如果缺少任何依赖的开发运行库,则编译器会给出Undefined reference

https://github.com/keengo99/kangl ...

似乎有人10.16就有类似的问题。。但是既没有回复也没有更新。。



话说是不是nginx好上手一点。。毕竟我是个小白,这两天搞这个占用了好多时间。。

小樱 发表于 2023/12/7 18:04

寻宝人2339 发表于 2023/12/7 12:18
似乎有人10.16就有类似的问题。。但是既没有回复也没有更新。。




可以先用3.5系列的版本,3.6的还在开发阶段我没正式用到生产环境里
3.6以前的防cc等各种功能,现在独立出来一个kwaf,模块化,通过dll、so加载,第三方开发者可以自由编写更多的功能模块,感觉看起来3.6主要就是多了http3、sendfile
http3毕竟是从h2升级后基于udp流量的quic协议,国内访问还是比较糟糕的,不开反而比较好
https://http3check.net/?host=www.itzmx.com

寻宝人2339 发表于 2023/12/7 22:55

小樱 发表于 2023/12/7 18:04
可以先用3.5系列的版本,3.6的还在开发阶段我没正式用到生产环境里
3.6以前的防cc等各种功能,现在独 ...

哦哦好的

寻宝人2339 发表于 2023/12/10 10:22

小樱 发表于 2023/12/7 00:03
如果缺少任何依赖的开发运行库,则编译器会给出Undefined reference

https://github.com/keengo99/kangl ...

我靠,找到原因了。。
那个pcre的库在ubuntu中是叫libpcre3-dev,用apt安装后这个在/usr/lib/x86_64-linux-gnu/里,而且是没有链接好的,需要手动链接:
ln -s /usr/lib/x86_64-linux-gnu/libpcre.so.3 /usr/lib/x86_64-linux-gnu/libpcre.so.1
注意这里是要链接到.so.1而不是文件夹中的.so,因为链接到.so.1才是正确的(网上看到的,我也不清楚系统中究竟是怎么规定的。由于当前没有.so.1所以需要到一个正常的电脑中看正确的是什么)


然后编译http3中要用到的那个lsquic项目需要安装libevent-dev,但是这个就可以直接用,不知道为啥。。

小樱 发表于 2023/12/10 18:20

寻宝人2339 发表于 2023/12/10 10:22
我靠,找到原因了。。
那个pcre的库在ubuntu中是叫libpcre3-dev,用apt安装后这个在/usr/lib/x86_64-lin ...

可以分享一个ubuntu编译安装kangle3.6的教程了

寻宝人2339 发表于 2023/12/21 20:02

小樱 发表于 2023/12/10 18:20
可以分享一个ubuntu编译安装kangle3.6的教程了

。。似乎是之前那一版的系统(20.04版本)不知道为何会导致出现这样的错误,又尝试用了23.04的系统就没这个问题了。。
页: [1]
查看完整版本: 尝试编译有http3 h3quic的kangle3.6报和pcre有关的错误