thesauri / jsmpeg-vnc-linux

Linux port of jsmpeg-vnc: a low latency, high framerate screen sharing server for Linux and client for browsers
35 stars 16 forks source link

I Can't Compile on Linuxmint 18.3 Sylvia #1

Closed MoorDev closed 3 years ago

MoorDev commented 6 years ago

Hello, This project is very cool. I want to stream my desktop to my Tablet.

Install packages:

build-essentials libavcodec-dev libavutil-dev libx11-dev zlib1g-dev libswscale-dev libwebsockets-dev

and type "make"

But, compile error with next:

kjm@kjm-HP-15-Notebook-PC ~/jsmpeg-vnc-linux-master/jsmpeg-vnc-linux-master $ make gcc -o bin/jsmpeg-vnc src/jsmpeg-vnc.c src/encoder.c src/grabber.c src/server.c src/app.c src/jskeycode2x11keycode.c -Isrc/ -Isrc/libwebsockets/ -I/usr/include/x86_64-linux-gnu -lavcodec-ffmpeg -lavutil-ffmpeg -lswscale-ffmpeg -lX11 -lXtst -lz -lwebsockets -std=c11 In file included from /usr/include/uv.h:62:0, from /usr/include/libwebsockets.h:176, from src/server.h:4, from src/app.h:9, from src/jsmpeg-vnc.c:7: /usr/include/uv-unix.h:135:9: error: unknown type name ‘pthread_rwlock_t’ typedef pthread_rwlock_t uv_rwlock_t; ^ /usr/include/uv-unix.h:152:9: error: unknown type name ‘pthread_barrier_t’ typedef pthread_barrier_t uv_barrier_t; ^ src/encoder.c: In function ‘encoder_encode’: src/encoder.c:68:23: warning: passing argument 2 of ‘sws_scale’ from incompatible pointer type [-Wincompatible-pointer-types] sws_scale(self->sws, in_data, in_linesize, 0, self->in_height, self->frame->da ^ In file included from src/encoder.h:6:0, from src/encoder.c:4: /usr/include/x86_64-linux-gnu/libswscale/swscale.h:229:5: note: expected ‘const uint8_t const {aka const unsigned char const}’ but argument is of type ‘uint8_t {aka unsigned char }’ int sws_scale(struct SwsContext c, const uint8_t const srcSlice[], ^ src/server.c:31:85: warning: ‘enum libwebsocket_callback_reasons’ declared inside parameter list ack_http(struct libwebsocket_context , struct libwebsocket , enum libwebsocke ^ src/server.c:31:85: warning: its scope is only this definition or declaration, which is probably not what you want src/server.c:32:91: warning: ‘enum libwebsocket_callback_reasons’ declared inside parameter list bsockets(struct libwebsocket_context , struct libwebsocket , enum libwebsocke ^ src/server.c:34:38: error: array type has incomplete element type ‘struct libwebsocket_protocols’ static struct libwebsocket_protocols server_protocols[] = { ^ src/server.c: In function ‘server_create’: src/server.c:60:18: warning: implicit declaration of function ‘libwebsocket_create_context’ [-Wimplicit-function-declaration] self->context = libwebsocket_create_context(&info); ^ src/server.c:60:16: warning: assignment makes pointer from integer without a cast [-Wint-conversion] self->context = libwebsocket_create_context(&info); ^ src/server.c: In function ‘server_destroy’: src/server.c:74:3: warning: implicit declaration of function ‘libwebsocket_context_destroy’ [-Wimplicit-function-declaration] libwebsocket_context_destroy(self->context); ^ src/server.c: In function ‘server_get_client_address’: src/server.c:98:2: warning: implicit declaration of function ‘libwebsockets_get_peer_addresses’ [-Wimplicit-function-declaration] libwebsockets_get_peer_addresses( ^ src/server.c:99:23: warning: implicit declaration of function ‘libwebsocket_get_socket_fd’ [-Wimplicit-function-declaration] self->context, wsi, libwebsocket_get_socket_fd(wsi), ^ src/server.c: In function ‘server_update’: src/server.c:107:2: warning: implicit declaration of function ‘libwebsocket_callback_on_writable_all_protocol’ [-Wimplicit-function-declaration] libwebsocket_callback_on_writable_all_protocol(&(server_protocols[1])); ^ src/server.c:108:2: warning: implicit declaration of function ‘libwebsocket_service’ [-Wimplicit-function-declaration] libwebsocket_service(self->context, 0); ^ src/server.c: In function ‘server_send’: src/server.c:123:2: warning: implicit declaration of function ‘libwebsocket_write’ [-Wimplicit-function-declaration] libwebsocket_write(socket, self->send_buffer, size, (enum libwebsocket_write_p ^ src/server.c:123:60: error: conversion to incomplete type libwebsocket_write(socket, self->send_buffer, size, (enum libwebsocket_write_p ^ src/server.c: In function ‘server_broadcast’: src/server.c:134:69: error: conversion to incomplete type libwebsocket_write(client->socket, self->send_buffer, size, (enum libwebsocke ^ src/server.c: At top level: src/server.c:144:1: warning: ‘enum libwebsocket_callback_reasons’ declared inside parameter list ) { ^ src/server.c:142:37: error: parameter 3 (‘reason’) has incomplete type enum libwebsocket_callback_reasons reason, ^ src/server.c: In function ‘callback_websockets’: src/server.c:145:31: warning: implicit declaration of function ‘libwebsocket_context_user’ [-Wimplicit-function-declaration] server_t self = (server_t )libwebsocket_context_user(context); ^ src/server.c:145:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] server_t self = (server_t )libwebsocket_context_user(context); ^ src/server.c: At top level: src/server.c:179:1: warning: ‘enum libwebsocket_callback_reasons’ declared inside parameter list ) { ^ src/server.c:177:37: error: parameter 3 (‘reason’) has incomplete type enum libwebsocket_callback_reasons reason, void user, ^ src/server.c: In function ‘callback_http’: src/server.c:180:19: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] server_t self = (server_t *)libwebsocket_context_user(context); ^ src/server.c:186:3: warning: implicit declaration of function ‘libwebsockets_return_http_status’ [-Wimplicit-function-declaration] libwebsockets_return_http_status(context, wsi, HTTP_STATUS_NOT_FOUND, NULL); ^ src/app.c:6:34: fatal error: X11/extensions/XTest.h: No such file or directory

How can I compile to this?

Linuxmint 18.3 Sylvia(based on ubuntu 16.04 xenial) gcc 5.4 amd64

thesauri commented 6 years ago

Hey! Fun to see that you're interested in the port. I haven't touched it in a while and I don't have a Linux machine available at the moment for testing, but let's see if we can figure it out.

src/app.c:6:34: fatal error: X11/extensions/XTest.h: No such file or directory'''

Seems like you need to install libxtst-dev (https://stackoverflow.com/questions/5073040/how-to-find-x11-extensions-xtest-h/5073075)

/usr/include/uv-unix.h:135:9: error: unknown type name ‘pthread_rwlock_t’ typedef pthread_rwlock_t uv_rwlock_t;

Try changing the compile flags in the make file as mentioned in this post.

MoorDev commented 6 years ago

Thanks. I worked Xtest.h and pthread errors. But, libwebsockets error is still..

What version is for this project? I used 1.7 (ubuntu 16.04 default version.)

thesauri commented 6 years ago

Found some old files, seems to have been version 1.6

thesauri commented 3 years ago

Finally took a look at this thanks to PR #2 that adds support for libwebsockets 4.2. The required dependencies are now listed in the README and there is a Dockerfile outlining a working build sequence.