Re[3]: Непонятная ошибка при компиляции gcc
От: Кодт Россия  
Дата: 20.06.06 13:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Попробую объяснить. Дело в том что я компилирую данные драйвера для ОC реального времени VxWorks.

А>Производитель платы утверждает, что драйвера могут работать под даннуй ОС.
А>В качестве компилятора можно использовать gcc, поэтому я и обратилась на этот форум с просьбой помочь.

Забей на cygwin, используй Торнадо.

Если IDE Tornado не нравится (а кому он нравится?) — то можно и из командной строки вызывать makefile. Только сперва установи переменные окружения
— пути INCLUDE и LIB к соответствующим каталогам (c:\tornado22\target\h и т.п.)
— WIND_BASE=c:\tornado22 и WIND_HOST_TYPE=x86-win32
— путь к экзешникам компилятора добавить в PATH

Чтобы собрать ядро — из IDE это делается наиболее простым способом. Ну, естественно, можно ручками добавить в makefile и/или в исходники .c, .h свои авторские правки.
Перекуём баги на фичи!
Re[4]: Непонятная ошибка при компиляции gcc
От: Кодт Россия  
Дата: 20.06.06 14:02
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Забей на cygwin, используй Торнадо.


Кстати, поскольку у VxWorks формат объектных файлов отличается от линукса, то либо придётся изрядно побиться, чтобы скрестить фронтенд cygwin'а с бэкендом tornado (а без него никак...), либо сразу отказаться от мучений.
Перекуём баги на фичи!
Re[5]: Непонятная ошибка при компиляции gcc
От: Кодт Россия  
Дата: 20.06.06 14:16
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Кстати, поскольку у VxWorks формат объектных файлов отличается от линукса, то либо придётся изрядно побиться, чтобы скрестить фронтенд cygwin'а с бэкендом tornado (а без него никак...), либо сразу отказаться от мучений.


Да, а имидж без Торнадо вообще не построить. Так что берём толстый кошелёк, покупаем лицензию, вытрясаем душу из техподдержки (а она пригодится, если устройство нестандартное — это как пить дать).
Перекуём баги на фичи!
Re[6]: Непонятная ошибка при компиляции gcc
От: Helga_F Россия  
Дата: 20.06.06 16:35
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Да, а имидж без Торнадо вообще не построить. Так что берём толстый кошелёк, покупаем лицензию, вытрясаем душу из техподдержки (а она пригодится, если устройство нестандартное — это как пить дать).


Весь прикол в том, что Торнадо имеется (лицензионное ), да только скрипты для запуска компиляции драйверов в тамошнем bash работают очень странно.
Поэтому служба поддержки (приславшая исходники драйвера) предложила использовать Cygwin.
В Cygwin скрипты запустились, но возникли ошибки при компиляции. Причем очень непонятные
Re[7]: Непонятная ошибка при компиляции gcc
От: Кодт Россия  
Дата: 21.06.06 08:00
Оценка:
Здравствуйте, Helga_F, Вы писали:

H_F>Весь прикол в том, что Торнадо имеется (лицензионное ), да только скрипты для запуска компиляции драйверов в тамошнем bash работают очень странно.

H_F>Поэтому служба поддержки (приславшая исходники драйвера) предложила использовать Cygwin.

Молодцы! Эх, если бы они ещё научили(сь) с IDE Tornado перейти на Eclipse или VisualStudio, цены бы им не было
А инструкцию по переезду на Cygwin они не предложили?

H_F>В Cygwin скрипты запустились, но возникли ошибки при компиляции. Причем очень непонятные


Наверное, Cygwin перепутал компиляторы (взял свой вместо торнадовского).
Чтобы побороться с этим, можно попробовать грязно поломать систему:
— переименовать cygwin'овские файлы (gcc.exe, g++.exe и т.п.) — чтобы они случайно не запустились
— добавить путь к tornado'вским в PATH
Перекуём баги на фичи!
Re[7]: Непонятная ошибка при компиляции gcc
От: Кодт Россия  
Дата: 21.06.06 08:26
Оценка:
Здравствуйте, Helga_F, Вы писали:

H_F>Весь прикол в том, что Торнадо имеется (лицензионное ), да только скрипты для запуска компиляции драйверов в тамошнем bash работают очень странно.


А откуда взялся bash в виндовском tornado? Или на хосте стоит solaris? Тогда непонятно, зачем нужен cygwin.

Может быть, чего-нибудь не хватает в переменных окружения. Или, наоборот, что-то лишнее присутствует. Читаем мануалы, изучаем содержимое скриптов, трясём техподдержку.

И вообще, зачем скрипты? Казалось бы, добавляешь .c- и .h-файлы в проект и компилируешь одним махом.
Перекуём баги на фичи!
Re[8]: Непонятная ошибка при компиляции gcc
От: Helga_F Россия  
Дата: 22.06.06 17:14
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Helga_F, Вы писали:


К>Наверное, Cygwin перепутал компиляторы (взял свой вместо торнадовского).

К>Чтобы побороться с этим, можно попробовать грязно поломать систему:
К>- переименовать cygwin'овские файлы (gcc.exe, g++.exe и т.п.) — чтобы они случайно не запустились
К>- добавить путь к tornado'вским в PATH

Дело в том, что данные ошибки возникают и компиляторе, который шел вместе с Cygwin и в компиляторе Торнадо.
Re[8]: Непонятная ошибка при компиляции gcc
От: Helga_F Россия  
Дата: 22.06.06 17:18
Оценка:
Здравствуйте, Кодт, Вы писали:

.

К>А откуда взялся bash в виндовском tornado? Или на хосте стоит solaris? Тогда непонятно, зачем нужен cygwin.

На хосте стоит Винда

К>Может быть, чего-нибудь не хватает в переменных окружения. Или, наоборот, что-то лишнее присутствует. Читаем мануалы, изучаем содержимое скриптов, трясём техподдержку.


К>И вообще, зачем скрипты? Казалось бы, добавляешь .c- и .h-файлы в проект и компилируешь одним махом.


Структура данного проекта очень сложная, куча переменных окружения и других настроек.
Мне удалось выцепить небольшой кусок кода и откомпилировать его обычным способом, но ошибка не исчезла.

Что ж, буду дальше штурмовать службу поддержки.
Re[8]: Непонятная ошибка при компиляции gcc
От: Helga_F Россия  
Дата: 23.06.06 09:36
Оценка:
В Торнадо лежит два компилятора стандарт С — gcc и С++ — g++pentium. (Машина target — Xeon)


Написала небольшой примерчик
init.c:


struct sci_unit
{
 int nodeId;
 int unitNum;
};

struct sci_unit ssu;

typedef struct sci_unit *Sci_p;




int Func(int num1, int num2)
{
    ssu.nodeId=num1;
    Sci_p sci_p;        /*22*/
    sci_p=&ssu;        /*23*/
    sci_p->nodeId=num2;
    return 1;
}



и откомпилировала его двумя способами.
Так вот, при компиляции gcc (gcc -c -O0 init.c) появляются следующие ошибки:

init.c: In function 'Func' :
init.c:22: parse error before 'sci_p1'
init.c:23: 'sci_p1' undeclared (first use in this function)
init.c:23: (Each undeclared identifier is reported only once
init.c:23: for each function it appears in.)


Компиляция g++pentium проходит нормально. В чем прикол, разве здесь то, что в данном коде не нравится ANSI C?


Хотя когда компилирую уже драйвера компилятором g++pentium, он начинает ругаться на следующее (причем у gcc это прокатило):

1) conflicted types for enum unsigned32
в одном файле unsigned32 описан как тип enum (
typedef enum unsigned32 {...}hostbridge_t ;

),
а в другом опредлен как тип int
typedef unsigned int insigned32

.

2) ANSI C++ forbids data member 'TORUS_sciPhisicalNodeIdTable' with same name as enclosing class
данная структура описана следующим образом:

typedef struct TORUS_sciPhysicalNodeIdTable {
         sciNodeId_t TORUS_sciPhysicalNodeIdTable[MAX_NUMBER_OF_NODES];
    } TORUS_sciPhysicalNodeIdTable_t;




Первый раз вижу, чтобы ANSI C допускал такое использование имен.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.