крос компилатор raspberry pi непълен тип, докато собственият компилатор работи

Настроих кръстосан компилатор за моя raspberry pi, този, който намерих тук: Инсталиране на Raspberry Pi Кръстосан компилатор

Сега това работи добре до момента, в който искам да използвам I2c библиотека (i2c-dev.h).

Когато компилирам кода по-долу с компилатора arm-linux-gnueabihf-g++, получавам грешка:

In file included from src/I2c.cpp:8:0:
src/../Include/I2c.h:29:18: error: field ‘message’ has incomplete type
   struct i2c_msg message;
                  ^

Междувременно, когато компилирам кода на raspi, той просто се изпълнява.

#ifndef I2C_H_
#define I2C_H_

#include <linux/i2c-dev.h> // Defines i2c_msg
#include ...

using namespace std;


typedef struct {
    struct i2c_msg message;

    void (*callback)(int);
    int messageID;

} t_msgQueue;

Някакви идеи за възможна причина или решение за това как мога да накарам кръстосания компилатор да работи правилно?


person Kees    schedule 06.08.2017    source източник


Отговори (2)


Първият ми заподозрян би бил различните версии на GCC между RPi и вашия крос компилатор; Известно е, че GCC променя начина, по който обработва изразите #include с течение на времето.

С изключение на разлика във версията, проверете дали файлът за включване на хост не е бил избран някъде случайно.

person madscientist159    schedule 06.08.2017
comment
Проверих версиите на компилатора: - кръстосаният компилатор е GNU 4.8.3 - собственият компилатор е GNU 4.9.4 Бележките по изданието обаче не обсъждат никакви промени по отношение на обработката на #includes или structs. Освен това използваните заглавни файлове са идентични. Някакви други идеи? - person Kees; 08.08.2017

Проблемът беше решен чрез добавяне на a

#include <linux/i2c.h>

преди заглавките на i2c-dev. Все още нямам представа защо двата компилатора дадоха различни резултати...

person Kees    schedule 13.08.2017