Closed Hofyyy closed 3 years ago
It's a lot of extra work, especially when you use all the codecs. I don't have much time available these days
Thank you for the reply. I have no hurry on that, but would like to contribute a little bit. If you will find some time over the next weeks, this would be cool. Or maybe a step by step approach would work so that other persons can complete the howto.
My current showstoper is the openssl installation. I get multiple errors in combination with your dynamic linking code. And I tried multiple versions which are listet in your header struct.
It's compile or load errors?
I try to compile aircast on Debian x86-64. And the last compile errors are in openSSL. If i remove the problematic lines I can compile all .o. files but then i receive multiple linking errors. You will find 3 steps below. The question would be, what openssl version do you use, because it is nothing in the makefile and every version i tried did not work ...
_In file included from ./src/castcore.c:27:0: ./src/castcore.h:30:28: fatal error: openssl/crypto.h: No such file or directory
^
compilation terminated. Makefile:76: recipe for target 'bin/x86-64/castcore.o' failed make: *** [bin/x86-64/castcore.o] Error 1_
UPNP = $(BASE)/libupnp/1.6.19 SHINE = $(BASE)/shine/src/lib DMAP_PARSER = $(BASE)/dmap-parser FLAC = $(BASE)/flac OPENSSL = $(BASE)/openssl
DEFINES += -D_FILE_OFFSET_BITS=64 -DPB_FIELD_16BIT -DHAVE_STDINT_H -DNDEBUG -D_GNU_SOURCE -D_USEXML
CFLAGS += -fdata-sections -ffunction-sections
ifeq ($(OS),Darwin) LDFLAGS += -Wl,-dead_strip else ifneq ($(OS), SunOS) LDFLAGS += -Wl,--gc-sections endif
vpath %.c $(TOOLS):$(COMMON):$(SRC):$(SQUEEZETINY):$(JANSSON)/src:$(NANOPB):$(MDNSSD):$(TINYSVCMDNS):$(DMAP_PARSER)
INCLUDE = -I. \ -I$(SHINE) \ -I$(DMAP_PARSER) \ -I$(VALGRIND)/memcheck -I$(VALGRIND)/include \ -I$(TOOLS) \ -I$(COMMON) \ -I$(SRC) -I$(SRC)/inc \ -I$(UPNP)/ixml/inc -I$(UPNP)/upnp/inc -I$(UPNP)/build/inc -I$(UPNP)/threadutil/inc \ -I$(JANSSON)/src \ -I$(NANOPB) \ -I$(MDNSSD) \ -I$(FLAC)/include\ -I$(OPENSSL)/include\ -I$(TINYSVCMDNS)
### 3. Now I get real errors
dutil/inc -I../../jansson/src -I../../nanopb -I../../mdnssd -I../../flac/include -I../../openssl/include -I../../tinysvcmdns ../tools/sslsym.c -c -o bin/x86-64/sslsym.o
../tools/sslsym.c:113:1: error: macro "SSL_library_init" passed 1 arguments, but takes just 0
SYMDECL(SSL_library_init, int, 0);
^~
../tools/sslsym.c:89:27: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘{’ token
ret fn(P(n,__VA_ARGS__)) { \
^
../tools/sslsym.c:113:1: note: in expansion of macro ‘SYMDECL’
SYMDECL(SSL_library_init, int, 0);
^~~
Makefile:79: recipe for target 'bin/x86-64/sslsym.o' failed
make: *** [bin/x86-64/sslsym.o] Error 1
Just to note that it took me half a day to get a working build chain just for airupnp-arm.
As for your openssl question, this fragment of my notes might help:
15. openssl 1.0.x: only the header files are required, but build as follows:
download and extract the tar file
./config —prefix=/home/pwt/AirConnect-Build/openssl-local make;
make install
16. Point the Makefile INCLUDE statements at the openssl-local/include directory
Thats sounds bad, you should not support so much platforms :-)
Now I get the followingm but I used versio 1.1 i will rety with 1.0.x
../tools/sslsym.c:111:9: error: redefinition of ‘TLS_client_method’ SYMDECL(TLS_client_method, const SSL_METHOD*, 0); ^ ../tools/sslsym.c:89:6: note: in definition of macro ‘SYMDECL’ ret fn(P(n,__VA_ARGS__)) { \ ^~ ../../airconnect/openssl/include/openssl/ssl.h:1619:33: note: previous definition of ‘TLS_client_method’ was here
^
../tools/sslsym.c:89:6: note: in definition of macro ‘SYMDECL’
ret fn(P(n,VA_ARGS__)) { \
^~
../tools/sslsym.c:110:9: note: in expansion of macro ‘SSLv23_client_method’
SYMDECL(SSLv23_client_method, const SSL_METHOD*, 0);
^~~~~~~~
../tools/sslsym.c:113:1: error: macro "SSL_library_init" passed 1 arguments, but takes just 0
SYMDECL(SSL_library_init, int, 0);
^~
../tools/sslsym.c:89:27: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘{’ token
ret fn(P(n,VA_ARGS__)) { \
^
../tools/sslsym.c:113:1: note: in expansion of macro ‘SYMDECL’
SYMDECL(SSL_library_init, int, 0);
^~~
Makefile:79: recipe for target 'bin/x86-64/sslsym.o' failed
make: *** [bin/x86-64/sslsym.o] Error 1
Bähm! The newest version 1.0.2u from 20.12.2019 is compatible. Maybe you can add this to your dependency list on the main page.
It seems to be that I have no compile error anymore. Also all *.a files are in place. Hopefully one last linker error: Again with openssl :-P
any idea?
bin/x86-64/castcore.o: In function InitSSL': /home/parallels/Sourcecode/AirConnect-master/aircast/./src/castcore.c:120: undefined reference to
OPENSSL_init_ssl'
/home/parallels/Sourcecode/AirConnect-master/aircast/./src/castcore.c:126: undefined reference to `SSL_CTX_set_options'
collect2: error: ld returned 1 exit status
Makefile:65: recipe for target '../bin/aircast-x86-64' failed
Had a similar issue with airupnp.
I believe I needed to compile OpenSSL_1_0_2-stable.
Thx for all the support. I was able to compile and link airconnect on debian x86-64.
Would you mind closing this one (I'll look at the PR soon)
Hello,
I tried some evenings to compile AirConnect from scatch without a success. At the moment I stuck at some openssl errors in your dynamic linker class.
I would like to improve the compability with my "Raumfeld / Teufel" setup and maybe add one feature. I think an optional silent mode which disables the mutlicast polling on the chromecast side would be cool. It would only use information from the config file, which should be enough For all network guys.
Because of the reason that your normal documentation is more or less complete, I thought maybe you can add a from scatch howto for the toolchain (including dependencies) for a debian x86_64?
Best regards from Germany