wasm openssl 获取 dlopen 中止
wasm openssl get dlopen abort
我编译 openssl1.1.1c 来做一些加密和解密 browser.Here 是我的构建脚本。
emconfigure ./Configure linux-x32 -no-asm -no-threads
sed -i 's|^CROSS_COMPILE.*$|CROSS_COMPILE=|g' Makefile
emmake make -j 12 build_generated libssl.a libcrypto.a apps/openssl
我得到了两个位码文件libcrypto.so
和libssl.so
,然后我在自己的代码中使用它。
这是我的 CMkaeLists.txt:
include_directories("${OPENSSL_ROOT}/build/include")
link_directories("${OPENSSL_ROOT}/lib")
set(CMAKE_C_FLAGS "--pre-js pre.js -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\",\"getValue\",\"setValue\"]'"
SET(CMAKE_EXECUTABLE_SUFFIX ".html")
add_executable(SM2FinalNew main.c ${DIR_SRCS})
target_link_libraries(SM2FinalNew crypto)
当我使用sha256 base64时一切正常,但是当我使用某种方法实现sm2加密和解密时,网页出现错误
SM2FinalNew.html:98 To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking
我发现当我在openssl/ec.h
中调用EC_POINT_mul
方法时,错误出现,当我评论EC_POINT_mul
调用时,错误消失,但加密结果不正确。
不知道为什么。
您正在编译的代码似乎在某处试图使用 dlopen
加载外部库。 Emscripten 对共享库和动态 linking 的支持相当有限。最好的办法是找到有问题的代码,然后尝试静态 link 所需的库。
我编译 openssl1.1.1c 来做一些加密和解密 browser.Here 是我的构建脚本。
emconfigure ./Configure linux-x32 -no-asm -no-threads
sed -i 's|^CROSS_COMPILE.*$|CROSS_COMPILE=|g' Makefile
emmake make -j 12 build_generated libssl.a libcrypto.a apps/openssl
我得到了两个位码文件libcrypto.so
和libssl.so
,然后我在自己的代码中使用它。
这是我的 CMkaeLists.txt:
include_directories("${OPENSSL_ROOT}/build/include")
link_directories("${OPENSSL_ROOT}/lib")
set(CMAKE_C_FLAGS "--pre-js pre.js -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\",\"getValue\",\"setValue\"]'"
SET(CMAKE_EXECUTABLE_SUFFIX ".html")
add_executable(SM2FinalNew main.c ${DIR_SRCS})
target_link_libraries(SM2FinalNew crypto)
当我使用sha256 base64时一切正常,但是当我使用某种方法实现sm2加密和解密时,网页出现错误
SM2FinalNew.html:98 To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking
我发现当我在openssl/ec.h
中调用EC_POINT_mul
方法时,错误出现,当我评论EC_POINT_mul
调用时,错误消失,但加密结果不正确。
不知道为什么。
您正在编译的代码似乎在某处试图使用 dlopen
加载外部库。 Emscripten 对共享库和动态 linking 的支持相当有限。最好的办法是找到有问题的代码,然后尝试静态 link 所需的库。