作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我会使用 libwebsockets.a 而不是 libwebsocket.so 来编译我的应用程序但我有一些问题。我认为缺少链接,但我找不到缺少什么库。
我的代码可以在 Raspian Jessie 的 Raspberry Pi 上编译并运行,但我希望我的代码可以在其他发行版上运行。为此,我想将 libwebsocket 集成到我的应用程序中。将我使用的libwebsocket.so切换到libwebsocket.a(切换到静态库)
我在文件夹中添加了 libwebsockets.h 和 .a。添加到该文件夹的链接(对于库 -L../FW_Shared/lib/libwebsockets 和包含 -I../FW_Shared/websockets/include)
抱歉,我的 Raspbien 是法语
EX : ../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : In function « libwebsocket_context_destroy » :
(.text+0x1414) :undefined reference to « ERR_free_strings »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_context_destroy » :
(.text+0x1414) : référence indéfinie vers « ERR_free_strings »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_context_destroy » :
(.text+0x1418) : référence indéfinie vers « EVP_cleanup »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_context_destroy » :
(.text+0x141c) : référence indéfinie vers « CRYPTO_cleanup_all_ex_data »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_create_context » :
(.text+0x1f30) : référence indéfinie vers « SSL_library_init »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_create_context » :
(.text+0x1f34) : référence indéfinie vers « OPENSSL_add_all_algorithms_noconf »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_create_context » :
(.text+0x1f38) : référence indéfinie vers « SSL_load_error_strings »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_create_context » :
(.text+0x1f58) : référence indéfinie vers « SSL_get_ex_new_index »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_create_context » :
(.text+0x1f68) : référence indéfinie vers « SSLv23_server_method »
../FW_Shared/lib/libwebsockets/libwebsockets.a(libwebsockets_la-libwebsockets.o) : Dans la fonction « libwebsocket_create_context » :
(.text+0x2208) : référence indéfinie vers « SSLv23_client_method »
我的生成文件:
READER = Reader
ROOT_DIR = .
PROJ_DIR = $(ROOT_DIR)/src
LIB_DIR = $(ROOT_DIR)/lib
INC_DIR = $(ROOT_DIR)/include
OUT_DIR = $(ROOT_DIR)/bin
NAME = TestServer
# CC = arm-linux-gnueabi-gcc
CC = arm-linux-gnueabihf-gcc
CFLAGS = -DNUR_EXPOSE_WIN32API -std=gnu99 -DNUR_MODULE -pedantic -W -Wall
SRC = $(PROJ_DIR)/testServer.c \
$(PROJ_DIR)/mtTestVersion.c \
$(PROJ_DIR)/mtTestQueue.c \
$(PROJ_DIR)/mtTestJsonFormat.c \
$(PROJ_DIR)/mtTestWebSocket.c
OBJ= $(SRC:.c=.o)
LIBS = -L../FW_Shared/tools/lib/ -L../FW_Shared/lib/liblog4c/ -L../FW_Shared/lib/libjansson -L../FW_Shared/lib/libwebsockets -L/usr/lib/arm-linux-gnueabihf/ -L../HW_Reader/bin/NordicID/ -L../HW_Reader/lib/NordicID/ -L../FW_TestCtrl/bin/ -L$(LIB_DIR) -lmtTestCtrl -lmtTools -lNurApiRasPi -lrt -lm -lpthread -ljansson -llog4c -lwebsockets -lcrypto -lssl -lz
INCLUDES = -I./include -I/usr/include/ -I../FW_Shared/log4c-1.2.4/src -I../FW_TestCtrl/include -I../HW_Reader/include/$(READER) -I../FW_Shared/jansson/include -I../FW_Shared/websockets/include -I../FW_Shared/tools/inc
TARGET = 0.0.0.0
TARGET_PATH = test/
all: $(NAME)
$(NAME): $(OBJ)
$(CC) -o $(OUT_DIR)/$(NAME) $(INCLUDES) $(CFLAGS) $(OBJ) $(LIBS)
clean:
rm -rf $(OBJ) *~ \#*\# src/*~ src/\#*\# include/*~ include/\#*\#
fclean: clean
rm -rf $(OUT_DIR)/$(NAME)
re : fclean all
%.o:%.c
$(CC) -c $< -o $@ $(CFLAGS) $(INCLUDES) $(LIBS)
.PHONY: clean fclean push
我找到了一些要添加的链接(例如 -lz -lssl),以减少 undefined reference ,但我找不到最后一个错误行缺少哪个链接。也许这是解决这个问题的另一种方法?
谢谢
最佳答案
通常 -lssl 必须删除所有错误,但我使用的库版本有问题。 (我尝试为 RaspBian Jessie 和 Raspbian Stretch 编译我的程序,一些库的版本发生了变化并且不兼容)。谢谢
关于c - 如何编译静态libwebscocket.a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56272681/
我是一名优秀的程序员,十分优秀!