c - 共享库编译 gcc

标签 c gcc websocket linker-errors undefined-reference

我正在尝试编译使用 libwebsockets 库的程序。

我已经在我的 linux 机器上下载并编译了 libwebsockets,并具有以下目录结构。

/libwebsockets/build/bin/  -> contains the compiled binaries (test-server,test-client etc)

/libwebsockets/build/lib/  -> contains the shared libraries. libwebsockets.so libwebsockets.a libwebsockets.so.5.0.0             

/libwebsockets/lib/ -> contains all the header files. eg: libwebsockets.h libwebsockets.c

/libwebsockets/test-server -> contains application programs..(test-server.c test-client.c etc)

现在我创建了我的 C 程序文件 simple-server.c /libwebsockets/test-server 目录。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <syslog.h>
#include <signal.h>
#include <libwebsockets.h>

当我尝试编译这个程序时:

gcc -L/home/gadre/Desktop/Testing/libwebsockets/build/lib/ -lwebsockets simple-server.c -o s

我收到链接器错误:

simple-server.c:(.text+0x14c): undefined reference to `lwsl_emit_syslog'
simple-server.c:(.text+0x158): undefined reference to `lws_set_log_level'
simple-server.c:(.text+0x16d): undefined reference to `libwebsocket_get_internal_extensions'
simple-server.c:(.text+0x1a5): undefined reference to `libwebsocket_create_context'
simple-server.c:(.text+0x1c4): undefined reference to `_lws_log'
simple-server.c:(.text+0x1e9): undefined reference to `libwebsocket_service'
simple-server.c:(.text+0x209): undefined reference to `libwebsocket_context_destroy'
simple-server.c:(.text+0x21d): undefined reference to `_lws_log'

如何解决这个问题..我也尝试将路径放在 LD_LIBRARY_PATH 中。但链接器仍然找不到共享库。

最佳答案

我现在可以编译了……我使用了以下命令。带有运行时链接选项。

gcc -L/home/gadre/Desktop/Testing/libwebsockets/build/lib -Wl,-rpath=/home/gadre/Desktop/Testing/libwebsockets/build/lib -Wall -o server incr_server. c -lwebsockets

我不知 Prop 体情况,但现在可以用了

关于c - 共享库编译 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28271405/

相关文章:

javascript - 使用 websocket 处理连接丢失

c++ - 安装 pHash 库时对 `fftw_init_threads' 的 undefined reference

c - 调用c函数时出现段错误

c - 递增指针并分配一个新值 - 堆栈损坏

c++ - 无法在 linux ubuntu 20.04 中安装 libgraph

gcc - 如何从 gcc(或其他地方)获取合法 ARM 操作码列表?

c# - WebSocket 通信抛出 System.ObjectDisposedException

java - 带有扇出交换的 Stomp Websocket

c - 将二维数组内的圆形边界内的值相加的算法

控制字符串指针 strupr()