sbwml / openwrt-curl-prebuilt

Building libcurl with HTTP/3 and QUIC support
10 stars 5 forks source link

Curl报错: symbol not found #1

Open Albresky opened 1 month ago

Albresky commented 1 month ago

作者你好。

我仿照本仓库的workflow,基于最新的openwrt官方源码在本地编译了Curl with QUIC,固件、package编译正常完成。

然而刷好固件后,curl报错如下:

root@OpenWrt:~# curl
Error relocating /usr/lib/libcurl.so.4: SSL_set_quic_use_legacy_codepoint: symbol not found
Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_provide_quic_data: symbol not found
Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_process_quic_post_handshake: symbol not found
Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_CTX_set_quic_method: symbol not found
Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_set_quic_transport_params: symbol not found
Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_get_peer_quic_transport_params: symbol not found

openssl版本:

root@OpenWrt:~# openssl version
OpenSSL 3.0.14+quic 4 Jun 2024 (Library: OpenSSL 3.0.10 1 Aug 2023)

请问是怎么回事呢?


PS:

之前有试过编译curl的openssl依赖直接用 quictls/openssl的源码,可是不知道为啥在编译过程中我记得是总会找不到 libcrypto.so.3libssl.so.3 两个库(已打patch将xx.81.3改成xx.3,即使不把quictls的前缀改成正常的.3,也会报错:找不到 libcrypto.so.81.3libssl.so.81.3

这里是参考了你在 https://github.com/openwrt/packages/issues/19382 里的comments。

也尝试过直接把本仓库release的ipk上传过去手动opkg安装,不过又报错如下:

Collected errors:
 * pkg_init_from_file: Malformed package file /tmp/upload.ipk

不过不管是自己用quictls编译,还是直接参考本仓库的workflow,均不能work。

谢谢解答!

sbwml commented 1 month ago

root@OpenWrt:~# curl Error relocating /usr/lib/libcurl.so.4: SSL_set_quic_use_legacy_codepoint: symbol not found Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_provide_quic_data: symbol not found Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_process_quic_post_handshake: symbol not found Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_CTX_set_quic_method: symbol not found Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_set_quic_transport_params: symbol not found Error relocating /usr/lib/libngtcp2_crypto_quictls.so.2: SSL_get_peer_quic_transport_params: symbol not found

你编译的 openssl 有问题

Collected errors:

  • pkg_init_from_file: Malformed package file /tmp/upload.ipk

release 的下载的文件是压缩文件,需要解压才得到 ipk。并且它需要按照以来顺序来逐一安装,这意味对 openwrt 包需要具备一定的熟悉程度。

sbwml commented 1 month ago

如果你是 “开发者” ,参考

https://github.com/sbwml/r4s_build_script/blob/master/openwrt/scripts/00-prepare_base.sh#L209-L259

https://github.com/sbwml/r4s_build_script/blob/master/openwrt/scripts/00-prepare_base.sh#L276-L286

https://github.com/sbwml/r4s_build_script/blob/master/openwrt/23-config-common#L1-L10

那么你一定能获得功能正常的 quictls & curl (h3)