cgart / OpenBM

BMW's I-Bus to TCP/IP Gateway
http://projects.tevs.eu/openbm
GNU General Public License v3.0
17 stars 9 forks source link

How to compile for RaspberryPi? #5

Open TIMAI2 opened 6 years ago

TIMAI2 commented 6 years ago

The original deb file from Art Tevs dies on the first line with 'unexpected "(" '

How do I compile openBM for a raspberry PI, specifically libreElec image

Thanks

harryberlin commented 6 years ago

LE is a very downsized readonly OS. I mean you should try OSMC.

TIMAI2 commented 6 years ago

So the original deb file I have for openBM should work on an raspBerry Pi ? Agree that LibreElec is sparse :)

harryberlin commented 6 years ago

i mean you have to compile at raspberry pi.

TIMAI2 commented 6 years ago

OK, getting stuck with cmake ../

I had to change all references to /home/tevs/src/OpenBM to /home/osmc in CMakecache.txt

Then cmake ran but... This fails on pthreads and lpthreads - CMakeError.log below

Determining if the pthread_create exist failed with the following output:
Change Dir: /home/osmc/gateway/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_f62cd/fast"
/usr/bin/make -f CMakeFiles/cmTC_f62cd.dir/build.make CMakeFiles/cmTC_f62cd.dir/build
make[1]: Entering directory '/home/osmc/gateway/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_f62cd.dir/CheckSymbolExists.cxx.o
/usr/bin/c++      -o CMakeFiles/cmTC_f62cd.dir/CheckSymbolExists.cxx.o -c /home/osmc/gateway/build/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx
Linking CXX executable cmTC_f62cd
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f62cd.dir/link.txt --verbose=1
/usr/bin/c++        CMakeFiles/cmTC_f62cd.dir/CheckSymbolExists.cxx.o  -o cmTC_f62cd -rdynamic
CMakeFiles/cmTC_f62cd.dir/CheckSymbolExists.cxx.o: In function `main':
CheckSymbolExists.cxx:(.text+0x38): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_f62cd.dir/build.make:97: recipe for target 'cmTC_f62cd' failed
make[1]: *** [cmTC_f62cd] Error 1
make[1]: Leaving directory '/home/osmc/gateway/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_f62cd/fast' failed
make: *** [cmTC_f62cd/fast] Error 2

File /home/osmc/gateway/build/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx:
/* */
#include <pthread.h>

int main(int argc, char** argv)
{
  (void)argv;
#ifndef pthread_create
  return ((int*)(&pthread_create))[argc];
#else
  (void)argc;
  return 0;
#endif
}
Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/osmc/gateway/build/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_17538/fast"
/usr/bin/make -f CMakeFiles/cmTC_17538.dir/build.make CMakeFiles/cmTC_17538.dir/build
make[1]: Entering directory '/home/osmc/gateway/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_17538.dir/CheckFunctionExists.cxx.o
/usr/bin/c++     -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_17538.dir/CheckFunctionExists.cxx.o -c /home/osmc/gateway/build/CMa$
Linking CXX executable cmTC_17538
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_17538.dir/link.txt --verbose=1
/usr/bin/c++    -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTC_17538.dir/CheckFunctionExists.cxx.o  -o cmTC_17538 -rdynamic -lpthread$
/usr/bin/ld: cannot find -lpthreads
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_17538.dir/build.make:97: recipe for target 'cmTC_17538' failed
make[1]: *** [cmTC_17538] Error 1
make[1]: Leaving directory '/home/osmc/gateway/build/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_17538/fast' failed
make: *** [cmTC_17538/fast] Error 2
TIMAI2 commented 6 years ago

Making progress, cmake ../ command now working after installing the libboost dependencies

Running make I get the following errors:

:~/gateway/build$ make
[ 14%] Building CXX object CMakeFiles/openbm-gateway.dir/main.cpp.o
In file included from /home/osmc/gateway/IBus.h:29:0,
                 from /home/osmc/gateway/Application.h:22,
                 from /home/osmc/gateway/main.cpp:20:
/home/osmc/gateway/ExtSerial.h: In member function ‘void extserial::serial_port::get_bit(GettableSerialPortBit&)’:
/home/osmc/gateway/ExtSerial.h:184:13: error: ‘service’ was not declared in this scope
             service.get_bit(implementation, bit, ec);
             ^~~~~~~
/home/osmc/gateway/ExtSerial.h: In member function ‘void extserial::serial_port::flush(bool, bool)’:
/home/osmc/gateway/ExtSerial.h:194:13: error: ‘service’ was not declared in this scope
             service.flush(implementation, ec, inputBuffer, outputBuffer);
             ^~~~~~~
/home/osmc/gateway/ExtSerial.h: In member function ‘void extserial::serial_port::drain()’:
/home/osmc/gateway/ExtSerial.h:204:13: error: ‘service’ was not declared in this scope
             service.drain(implementation, ec);
             ^~~~~~~

^CCMakeFiles/openbm-gateway.dir/build.make:62: recipe for target 'CMakeFiles/openbm-gateway.dir/main.cpp.o' failed
make[2]: *** [CMakeFiles/openbm-gateway.dir/main.cpp.o] Interrupt
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/openbm-gateway.dir/all' failed
make[1]: *** [CMakeFiles/openbm-gateway.dir/all] Interrupt
Makefile:83: recipe for target 'all' failed
make: *** [all] Interrupt

All / Any help most welcome :)

piotrkochan commented 6 years ago

Same here

harryberlin commented 5 years ago

do you have to place "io_" before service?