首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >交叉编译libwebsocket时,字段‘ctx’具有不完整的类型错误

交叉编译libwebsocket时,字段‘ctx’具有不完整的类型错误
EN

Stack Overflow用户
提问于 2021-01-12 16:31:29
回答 1查看 213关注 0票数 0

我正在尝试为arm交叉编译libwebsocket。我在CMakefiles.txt中放置了OpenSSL和Zlib路径。但是在命令"make“之后,它会出错。

CMakefiles.txt中的OpenSSL和Zlib路径设置

代码语言:javascript
运行
复制
SET(ZLIB_INCLUDE_DIR /home/jacob/Workspace/lib/zlib/include)
SET(ZLIB_LIBRARY /home/jacob/Workspace/lib/zlib/lib/libz.so)

set(OPENSSL_ROOT_DIR /home/jacob/Workspace/lib/openssl/)
set(OPENSSL_CRYPTO_LIBRARY /home/jacob/Workspace/lib/openssl/lib/libcrypto.so)
set(OPENSSL_INCLUDE_DIR /home/jacob/Workspace/lib/openssl/include/)
set(OPENSSL_LIBRARIES /home/jacob/Workspace/lib/openssl/lib/)
set(OPENSSL_SSL_LIBRARY /home/jacob/Workspace/lib/openssl/lib/libssl.so)

输入"make“命令时出现错误

代码语言:javascript
运行
复制
jacob@ubuntu:~/Workspace/Github/libwebsockets/build$ make
Scanning dependencies of target GENHDR
[  1%] Creating build include dir
[  1%] Built target GENHDR
Scanning dependencies of target websockets
[  2%] Building C object lib/CMakeFiles/websockets.dir/plat/unix/unix-caps.c.o
In file included from /home/jacob/Workspace/Github/libwebsockets/include/libwebsockets.h:632,
                 from /home/jacob/Workspace/Github/libwebsockets/lib/core/./private-lib-core.h:140,
                 from /home/jacob/Workspace/Github/libwebsockets/lib/plat/unix/unix-caps.c:28:
/home/jacob/Workspace/Github/libwebsockets/include/libwebsockets/lws-genhash.h:85:18: error: field ‘ctx’ has incomplete type
   85 |         HMAC_CTX ctx;
      |                  ^~~
lib/CMakeFiles/websockets.dir/build.make:62: recipe for target 'lib/CMakeFiles/websockets.dir/plat/unix/unix-caps.c.o' failed
make[2]: *** [lib/CMakeFiles/websockets.dir/plat/unix/unix-caps.c.o] Error 1
CMakeFiles/Makefile2:1068: recipe for target 'lib/CMakeFiles/websockets.dir/all' failed
make[1]: *** [lib/CMakeFiles/websockets.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2
EN

Stack Overflow用户

回答已采纳

发布于 2021-01-14 08:37:52

我自己解决了这个问题。我添加了工具链的cmake选项,交叉编译的openssl等。

cmake命令

代码语言:javascript
运行
复制
cmake -DLWS_WITHOUT_EXTENSIONS=ON -DLWS_WITHOUT_TESTAPPS=ON -DLWS_WITHOUT_TEST_CLIENT=ON \
-DLWS_WITHOUT_TEST_ECHO=ON -DLWS_WITHOUT_TEST_FRAGGLE=ON -DLWS_WITHOUT_TEST_PING=ON \
-DLWS_WITHOUT_TEST_SERVER=ON -DLWS_WITHOUT_TEST_SERVER_EXTPOLL=ON -DLWS_WITH_NO_LOGS=ON \
-DLWS_WITH_RANGES=OFF -DLWS_WITH_SHARED=OFF -DLWS_WITH_ZIP_FOPS=OFF -DLWS_WITH_ZLIB=OFF \
-DLWS_STATIC_PIC=ON -DLWS_WITH_SSL=ON \
-DLWS_OPENSSL_LIBRARIES="/home/jacob/Workspace/lib/openssl/lib/libssl.a;/home/jacob/Workspace/lib/openssl/lib/libcrypto.a" \
-DLWS_OPENSSL_INCLUDE_DIRS="/home/jacob/Workspace/lib/openssl/include" \
-DCMAKE_TOOLCHAIN_FILE="/home/jacob/Workspace/Github/libwebsockets/cross-compile-arm.cmake" ..

cross-compile-arm.cmake

代码语言:javascript
运行
复制
set(CROSS_PATH /your-toolchain-path/bin)
set(CMAKE_SYSTEM_NAME Ubuntu)
set(BUILD_SHARED_LIBS OFF)
set(CMAKE_C_COMPILER "${CROSS_PATH}/arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "${CROSS_PATH}/arm-linux-gnueabihf-g++")
set(CMAKE_C_FLAGS "-Wno-error")
set(CMAKE_FIND_ROOT_PATH "${CROSS_PATH}")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65680357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档