fw876 / helloworld

GNU General Public License v3.0
3.63k stars 2.64k forks source link

SSR+编译选择libustream-wolfssl会导致编译失败 #675

Closed baby195lxl closed 2 years ago

baby195lxl commented 2 years ago

设备:斐讯N1盒子

编译时选择libustream-wolfssl会导致编译失败,如选择libustream-openssl则可正常编译

日志

xiechangan123 commented 2 years ago

不光是这样,三个ssl中任选其中两个(libustream-wolfssl libustream-mbedtls)都会编译失败,只能选openssl才能正常编译啊。。。哈哈,说好不依赖openssl 的呢

wekingchen commented 2 years ago

同样出错,请问要怎么修改才能编译通过呢?

baby195lxl commented 2 years ago

同样出错,请问要怎么修改才能编译通过呢?

配置的时候选择libustream-openssl

1715173329 commented 2 years ago

如果不清楚如何选择,请保持默认。

acooler15 commented 2 years ago

添加CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_libustream-wolfssl=y# CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_libustream-openssl is not set 到配置文件试试

baby195lxl commented 2 years ago

如果不清楚如何选择,请保持默认。

OK

baby195lxl commented 2 years ago

添加CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_libustream-wolfssl=y# CONFIG_PACKAGE_luci-app-ssr-plus_INCLUDE_libustream-openssl is not set 到配置文件试试

我试试,先close了

e6e6 commented 2 years ago

ssr-libev 就依赖 openssl,如果想剔除 libopenssl,需要对 ssr-libev 也做下修改

--- a/shadowsocksr-libev/Makefile
+++ b/shadowsocksr-libev/Makefile
@@ -33,7 +33,7 @@ define Package/shadowsocksr-libev/Default
     SUBMENU:=Web Servers/Proxies
     TITLE:=shadowsocksr-libev ssr-$(1)
     URL:=https://github.com/shadowsocksrr/shadowsocksr-libev
-    DEPENDS:=+libev +libsodium +libopenssl +libpthread +libpcre +libudns +zlib
+    DEPENDS:=+libev +libmbedtls +libpthread +libsodium +libpcre +libudns +zlib
   endef

   define Package/shadowsocksr-libev-ssr-$(1)/install
@@ -54,7 +54,8 @@ CONFIGURE_ARGS += \
    --disable-documentation \
    --disable-ssp \
    --disable-assert \
-   --enable-system-shared-lib
+   --enable-system-shared-lib \
+   --with-crypto-library=mbedtls

 TARGET_CFLAGS += -flto
 TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed

然后会发现 ssr-libev 编译不过去,需要对 mbedtls 打一个补丁

--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -2142,7 +2142,7 @@
  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
  */
-//#define MBEDTLS_CAMELLIA_C
+#define MBEDTLS_CAMELLIA_C

 /**
  * \def MBEDTLS_ARIA_C

如果真想剔除 libopenssl 的话,ssh 进固件,opkg whatdepends libopenssl 看下你的固件里有多少依赖这个 SSL 库的

另外,发现 ssrp+ 项目做成了 可选依赖 wolfssl openssl mbedtls 了,不错,不过 wpad 只有 wolfssl openssl 可选,想要无线,就必定引入 libopenssl libwolfssl 这两个之一。

VergilGao commented 2 years ago

补充一下,wolfssl和openssl这两个库其实是有区别的,wolfssl没有wget-ssl命令,wget命令就可以下载https连接的内容 像vssr这个库里面硬编码了很多wget-ssl,如果用官方21.02(官方21.02已经全面迁移到wolfssl了),就要先用sed把wget-ssl替换成wget才能正常使用。 此外,最好把--no-check-certificate也删掉

sed -i "s/ --no-check-certificate / /g" `grep wget-ssl -rl ./luci-app-vssr`
sed -i "s/wget-ssl/wget/g" `grep wget-ssl -rl ./luci-app-vssr`
rdcyuxi commented 2 years ago

补充一下,wolfssl和openssl这两个库其实是有区别的,wolfssl没有wget-ssl命令,wget命令就可以下载https连接的内容 像vssr这个库里面硬编码了很多wget-ssl,如果用官方21.02(官方21.02已经全面迁移到wolfssl了),就要先用sed把wget-ssl替换成wget才能正常使用。 此外,最好把--no-check-certificate也删掉

sed -i "s/ --no-check-certificate / /g" `grep wget-ssl -rl ./luci-app-vssr`
sed -i "s/wget-ssl/wget/g" `grep wget-ssl -rl ./luci-app-vssr`

官方的里面,wget软连接到wget-ssl了

root@OpenWrt:~# ll /usr/bin/wget
lrwxrwxrwx    1 root     root            21 Oct 24 17:01 /usr/bin/wget -> /usr/libexec/wget-ssl*
root@OpenWrt:~#
VergilGao commented 2 years ago

补充一下,wolfssl和openssl这两个库其实是有区别的,wolfssl没有wget-ssl命令,wget命令就可以下载https连接的内容 像vssr这个库里面硬编码了很多wget-ssl,如果用官方21.02(官方21.02已经全面迁移到wolfssl了),就要先用sed把wget-ssl替换成wget才能正常使用。 此外,最好把--no-check-certificate也删掉

sed -i "s/ --no-check-certificate / /g" `grep wget-ssl -rl ./luci-app-vssr`
sed -i "s/wget-ssl/wget/g" `grep wget-ssl -rl ./luci-app-vssr`

官方的里面,wget软连接到wget-ssl了

root@OpenWrt:~# ll /usr/bin/wget
lrwxrwxrwx    1 root     root            21 Oct 24 17:01 /usr/bin/wget -> /usr/libexec/wget-ssl*
root@OpenWrt:~#

原来是这样,wget-ssl在这个地方啊。 不知道是出于什么理由这么搞

e6e6 commented 1 year ago

ssr-libev 就依赖 openssl,如果想剔除 libopenssl,需要对 ssr-libev 也做下修改

--- a/shadowsocksr-libev/Makefile
+++ b/shadowsocksr-libev/Makefile
@@ -33,7 +33,7 @@ define Package/shadowsocksr-libev/Default
     SUBMENU:=Web Servers/Proxies
     TITLE:=shadowsocksr-libev ssr-$(1)
     URL:=https://github.com/shadowsocksrr/shadowsocksr-libev
-    DEPENDS:=+libev +libsodium +libopenssl +libpthread +libpcre +libudns +zlib
+    DEPENDS:=+libev +libmbedtls +libpthread +libsodium +libpcre +libudns +zlib
   endef

   define Package/shadowsocksr-libev-ssr-$(1)/install
@@ -54,7 +54,8 @@ CONFIGURE_ARGS += \
    --disable-documentation \
    --disable-ssp \
    --disable-assert \
-   --enable-system-shared-lib
+   --enable-system-shared-lib \
+   --with-crypto-library=mbedtls

 TARGET_CFLAGS += -flto
 TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed

然后会发现 ssr-libev 编译不过去,需要对 mbedtls 打一个补丁

--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -2142,7 +2142,7 @@
  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
  *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
  */
-//#define MBEDTLS_CAMELLIA_C
+#define MBEDTLS_CAMELLIA_C

 /**
  * \def MBEDTLS_ARIA_C

如果真想剔除 libopenssl 的话,ssh 进固件,opkg whatdepends libopenssl 看下你的固件里有多少依赖这个 SSL 库的 另外,发现 ssrp+ 项目做成了 可选依赖 wolfssl openssl mbedtls 了,不错,不过 wpad 只有 wolfssl openssl 可选,想要无线,就必定引入 libopenssl libwolfssl 这两个之一。

你好,ssrp+项目链接是啥,openssl太大,我想改用mbedtls,谢谢。

就是本项目,菜单中显示 ShadowSocksR Plus+,切换到mbedtls有点繁琐,一些包硬编openssl库,虽然上游openwrt默认切到mbedtls了,前面的经验也是2年前的,不知道现在变化大不大