Theldus / wsServer

wsServer - a tiny WebSocket server library written in C

Home Page:https://theldus.github.io/wsServer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error building/compiling on mac silicon.

Sarang0218 opened this issue · comments

I am trying to use the wsServer library in my project, but I am encountering the following linker error every time I try to compile my code:

Undefined symbols for architecture arm64:
  "_ws_getaddress", referenced from:
      _onopen in echo-65824f.o
      _onclose in echo-65824f.o
      _onmessage in echo-65824f.o
  "_ws_sendframe", referenced from:
      _onmessage in echo-65824f.o
  "_ws_socket", referenced from:
      _main in echo-65824f.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Although the library builds successfully, it fails to generate the example executables. When I try to compile the examples manually with the following command:
clang echo.c -I/Users/Mark/Documents/UnivProject/src/wsServer/include

I receive the same linker error. I would appreciate any help or guidance on how to resolve this issue and use the library successfully in my project. Thank you!

Hi @Sarang0218,
How are you compiling? are you able to build the examples with CMake?, like:

$ git clone https://github.com/Theldus/wsServer.git
$ cd wsServer/
$ mkdir build
$ cd build
$ cmake ..
$ make

if not, what is the full output?

Although the library builds successfully, it fails to generate the example executables. When I try to compile the examples manually with the following command:
clang echo.c -I/Users/Mark/Documents/UnivProject/src/wsServer/include

When manually compiling a project, you must specify not only the includes directory, but also the static library and its dependencies. If you want to build echo.c present in this project (in examples/echo), you could do:

$ cd wsServer
$ make
$ cd examples/echo
$ gcc echo.c -I ../../include ../../libws.a -pthread

Maybe your macOS is compiling your library to x86_64 and trying to use it in an arm64 project, please check the architecture the generated object files are too...

Oh it seems like I forgot to specify the static library, haha.
It seems to work great now. Thanks for the quick reply!