gcc не находит файл заголовков

Тема в разделе "WASM.UNIX", создана пользователем t00x, 7 июн 2007.

  1. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Файл test.c :

    #include <stdio.h>
    #include <linux/types.h>

    int main(int argc, char **argv) {
    aligned_u64 test64 = 0;
    return 0;
    }

    при компиляции gcc выдаёт:

    test.c: In function main:
    error: aligned_u64 undeclared (first use in this function)
    error: (Each undeclared identifier is reported only once
    error: for each function it appears in.)
    error: expected ; before test64

    Короче не находит <linux/types.h>.

    Менял <linux/types.h> на </usr/include/linux/types.h> - не помогло.

    1) Как посмотреть какие *.h файлы gcc подгружает при компиляции?
    2) Может испорчен types.h ?
     
  2. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    gcc -I /usr/include -c test.c
    вообще говоря, <linux/types.h> - это заголовочный файл ядра и использовать его для написания не модулей ядра не следует
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    t00x
    А по сообщению так не скажешь :)

    Этот макрос (aligned_u64) включается только если определены какие-то прерпоцессорные константы, типа __KERNEL__ и т.п.
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    rei3er
    gcc -I /usr/include -c test.c - тоже пробовал.

    Причем если вставить #define aligned_u64 ... непосредственно в test.c - компилируется. Файл <linux/types.h> существует (специально проверил).

    вообще говоря, <linux/types.h> - это заголовочный файл ядра и использовать его для написания не модулей ядра не следует - упс! не знал, что ядра.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Может имелся ввиду <sys/types.h> ?
     
  6. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    Quantum
    Кажется __KERNEL_STRICT_NAMES.

    IceStudent
    В <sys/types.h> нет определения
    ...
    /* this is a special 64bit data type that is 8-byte aligned */
    #define aligned_u64 unsigned long long __attribute__((aligned(8)))
    ...

    rei3er
    Спасибо (не знал, что ядра).

    Спасибо всем.

    И ещё вопрос (теоретический).
    Если код модуля ядра (подгружаемого) в исполняемый файл вставить, получиться отладиццца?
     
  7. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    нет, если модуль будет содержать ссылки на внешние символы (экспортируемые ядром и находящиеся в ядре)