intrepidcs / icsneoapi

An open source library for communicating with vehicle network tools developed by Intrepid Control Systems
BSD 2-Clause "Simplified" License
9 stars 9 forks source link

Build errors on Jetson TX2 ARM processor #2

Open sguillaudeu opened 6 years ago

sguillaudeu commented 6 years ago

Trying to use ValueCAN as a SocketCAN device on the nVidia Jetson TX2 development board, Ubuntu 16.04 LTS, but icsneoapi won't compile (output below).

I installed the dependencies libftdi1, libftdi-dev, and Linux kernel sources. Then I built intrepid-socketcan-kernel-module and it loaded successfully. But I'm trying to build icsscand and it requires icsneo, which won't compile.

nvidia@tegra-ubuntu:~/valueCAN$ uname -a Linux tegra-ubuntu 4.4.38-trmbCAN1.0 #1 SMP PREEMPT Tue Apr 24 19:50:08 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux


nvidia@tegra-ubuntu:~/valueCAN/icsneoapi$ make g++ -g -c -fpic -fvisibility=hidden -fvisibility-inlines-hidden -O2 -Isrc/ src/CFTDILib.cpp In file included from src/CFTDILib.h:31:0, from src/CFTDILib.cpp:31: src/icsnVC40.h:2372:45: warning: division by zero [-Wdiv-by-zero] ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2412:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessage); ^ src/icsnVC40.h:2372:58: error: ‘(1 / 0)’ is not a constant expression ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2412:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessage); ^ src/icsnVC40.h:2372:58: error: enumerator value for ‘assert_line_2412’ is not an integer constant ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2412:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessage); ^ src/icsnVC40.h:2372:45: warning: division by zero [-Wdiv-by-zero] ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2413:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessageLong); ^ src/icsnVC40.h:2372:58: error: ‘(1 / 0)’ is not a constant expression ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2413:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessageLong); ^ src/icsnVC40.h:2372:58: error: enumerator value for ‘assert_line_2413’ is not an integer constant ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2413:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessageLong); ^ src/icsnVC40.h:2372:45: warning: division by zero [-Wdiv-by-zero] ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2414:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessageJ1850); ^ src/icsnVC40.h:2372:58: error: ‘(1 / 0)’ is not a constant expression ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2414:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessageJ1850); ^ src/icsnVC40.h:2372:58: error: enumerator value for ‘assert_line_2414’ is not an integer constant ASSERT_CONCAT(assertline, LINE) = 1 / (int)(!!(e)) \ ^ src/icsnVC40.h:2376:30: note: in expansion of macro ‘ics_static_assert’

define CHECK_STRUCT_SIZE(X) ics_static_assert(sizeof(X) == X##_SIZE, #X " is t

                          ^

src/icsnVC40.h:2414:1: note: in expansion of macro ‘CHECK_STRUCT_SIZE’ CHECK_STRUCT_SIZE(icsSpyMessageJ1850); ^ Makefile:17: recipe for target 'CFTDILib.o' failed make: *** [CFTDILib.o] Error 1

rukie commented 5 years ago

I also get this error.

jeffq-intrepid commented 5 years ago

Intrepid is releasing a fully rewritten open source implementation of our API: https://github.com/intrepidcs/libicsneo

The new implementation should be coming out of alpha soon, but it's pretty solid at the moment

rukie commented 5 years ago

Could we consider adding a "Deprecated" in this repository then? Note: I could build this on a Raspberry Pi. The failure isn't necessarily unique to ARM architecture. Maybe something else is missing?

rukie commented 5 years ago

Follow on: This only came up because I can't get python-ics installed. Is there a way to point python-ics towards libicsneo instead of icsneoapi? -- Should this be an issue under python-ics?

Thanks for the quick response!