Paddington 207 Опубликовано 30 апреля, 2014 Share Опубликовано 30 апреля, 2014 Вопрос в названии темы. Хочу использовать linux/pid.h, а его нет в /usr/include/. P. S. Слова в тегах почему-то не разделяются. Цитата Ссылка на сообщение Поделиться на другие сайты
Mona Sax 257 Опубликовано 30 апреля, 2014 Share Опубликовано 30 апреля, 2014 find / -name pid.h 1 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Paddington 207 Опубликовано 1 мая, 2014 Автор Share Опубликовано 1 мая, 2014 Файл нашелся в /usr/src/linux-headers-3.2.0-4-686-pae/include/config/hid/pid.h/usr/src/linux-headers-3.2.0-4-common/include/linux/pid.h Запускаю gcc с опцией -l/usr/src/linux-headers-3.2.0-4-common/include/, выдает fatal error: linux/pid.h: Нет такого файла или каталога. Цитата Ссылка на сообщение Поделиться на другие сайты
vit9696 415 Опубликовано 1 мая, 2014 Share Опубликовано 1 мая, 2014 (изменено) Можно кусочек кода, который этот хедер включает? -I должно было помочь, странно. Может, кавычки? Если там #include "linux/pid.h", попробуйте заменить на #include <linux/pid.h>. Особенность gcc, насколько помню. Изменено 1 мая, 2014 пользователем vit9696 Цитата Ссылка на сообщение Поделиться на другие сайты
Paddington 207 Опубликовано 1 мая, 2014 Автор Share Опубликовано 1 мая, 2014 Показать код: /*sample.c*/ #include <linux/sched.h> #include <linux/pid.h> #include <fcntl.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main (int argc, char ** argv) { return 0; } # Makefile sample: sample.c gcc -o sample sample.c -l/usr/src/linux-headers-3.2.0-4-common/include/ clean: rm -f *.o sample Цитата Ссылка на сообщение Поделиться на другие сайты
vit9696 415 Опубликовано 1 мая, 2014 Share Опубликовано 1 мая, 2014 (изменено) Ясно. Попробуй заменить (хедеры инклудятся -I, либы -L, опечатка): gcc -o sample sample.c -l/usr/src/linux-headers-3.2.0-4-common/include/ на gcc -I/usr/src/linux-headers-3.2.0-4-common/include/ sample.c -o sample Изменено 1 мая, 2014 пользователем vit9696 Цитата Ссылка на сообщение Поделиться на другие сайты
Paddington 207 Опубликовано 1 мая, 2014 Автор Share Опубликовано 1 мая, 2014 Теперь вот что пишет: gcc -I/usr/src/linux-headers-3.2.0-4-common/include/ sample.c -o sample In file included from /usr/src/linux-headers-3.2.0-4-common/include/linux/rcupdate.h:36:0, from /usr/src/linux-headers-3.2.0-4-common/include/linux/pid.h:4, from sample.c:2: /usr/src/linux-headers-3.2.0-4-common/include/linux/types.h:13:2: warning: #warning "Attempt to use kernel headers from user space, see http://kernelnewbies.org/KernelHeaders" [-Wcpp] In file included from /usr/src/linux-headers-3.2.0-4-common/include/linux/rcupdate.h:37:0, from /usr/src/linux-headers-3.2.0-4-common/include/linux/pid.h:4, from sample.c:2: /usr/src/linux-headers-3.2.0-4-common/include/linux/cache.h:5:23: fatal error: asm/cache.h: Нет такого файла или каталога compilation terminated. Цитата Ссылка на сообщение Поделиться на другие сайты
vit9696 415 Опубликовано 1 мая, 2014 Share Опубликовано 1 мая, 2014 Честно говоря, что-то очень специфичное вы пытаетесь сделать. Варнинг говорит, что хедеры ядра вы не так подключаете, так как я с ними никогда не работал, посоветовать правильный способ не могу. По поводу cache.h — что-то вроде: /usr/src/linux-headers-3.2.0-4-common/arch/x86/include/ надо в пути добавить. Цитата Ссылка на сообщение Поделиться на другие сайты
Paddington 207 Опубликовано 1 мая, 2014 Автор Share Опубликовано 1 мая, 2014 По поводу cache.h — что-то вроде: gcc -I/usr/src/linux-headers-3.2.0-4-common/include -I/usr/src/linux-headers-3.2.0-4-common/arch/x86/include/ sample.c -o sample Так? Цитата Ссылка на сообщение Поделиться на другие сайты
vit9696 415 Опубликовано 1 мая, 2014 Share Опубликовано 1 мая, 2014 Ну, по аналогии с предыдущим файлом же. Ищешь в поиске, добавляешь. Хотя, имхо, странно всё это занятие >< Цитата Ссылка на сообщение Поделиться на другие сайты
Paddington 207 Опубликовано 1 мая, 2014 Автор Share Опубликовано 1 мая, 2014 (изменено) Мне нужна функция find_task_by_vpid (/usr/src/linux-headers-3.2.0-4-common/include/linux/sched.h) или подобная. gcc -I/usr/src/linux-headers-3.2.0-4-common/include/ sample.c -o sample При таком запуске gcc почему-то ее не находит. Я хотел использовать find_get_pid (/usr/src/linux-headers-3.2.0-4-common/include/linux/pid.h). Ну, по аналогии с предыдущим файлом же. Как несколько путей добавить? Как в моем сообщении или по-другому? А вообще это все нужно для того, чтобы вывести имена файлов, используемых процессом. Может, есть что-нибудь попроще? Изменено 1 мая, 2014 пользователем Paddington Цитата Ссылка на сообщение Поделиться на другие сайты
vit9696 415 Опубликовано 1 мая, 2014 Share Опубликовано 1 мая, 2014 1) В системе много sched.h, поэтому надо убедиться, что инклудится именно тот, что нужен. Стоит проверить PATH gcc Согласно ссылке http://gcc.gnu.org/ml/gcc-help/2007-09/msg00205.htmlМожно заюзать что-то вроде `gcc -print-prog-name=cc1` -v и посмотреть, инклудится ли тот sched.h, что содержит прототип для find_task_by_vpid. 2) Да, именно так пути добавляются. Честно говоря, это в справке написано 3) Ну а по проблеме: http://www.cyberciti.biz/faq/howto-linux-get-list-of-open-files/ не? 1 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.