Приветствую ЛОР!
Решил на днях в любимой генте собрать @kde-4.7 из оверлея kde. Всё шло прекрасно, пока дело не дошло до ненавистного мне непомука. Нафиг ненужный сервис, которую к моей великой печали пригвоздили намертво к кедам, не желает собираться. emerge --info, build log.
Знаю, сам виноват, что нестабильную версию собираю. Однако решил провести эксперимент. Скопировал в новый файл инклуды и проблемную функцию из nepomuk/servicestub/priority.cpp и попытался его собрать.
Вот что получилось:
#include <iostream>
#include <string.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#ifndef _WIN32
#include <sys/syscall.h>
#include <errno.h>
#include <sched.h>
#endif
bool lowerSchedulingPriority()
{
struct sched_param param;
memset( ¶m, 0, sizeof(param) );
param.sched_priority = 0;
return !sched_setscheduler( 0, SCHED_IDLE, ¶m );
}
int main()
{
std::cout << lowerSchedulingPriority() << std::endl;
return 0;
}
А вот результат сборки:
$ g++ -o sched_test sched_test.c
sched_test.c: In function 'bool lowerSchedulingPriority()':
sched_test.c:20: error: 'SCHED_IDLE' was not declared in this scope
Что я упускаю? Почему обьявленные в <sched.h> константы и функции не видны в моём файле? Пробовал менять <sched.h> на <linux/sched.h>, тестовый файл собирается и работает, однако с непомуком этот трюк не сработал, появилась другая ошибка: «error: storage size of 'param' isn't known».
Очевидно, что всё должно собираться без таких манипуляций. У меня наверняка какая-то проблема с путями поиска либо где-то ебилд корявый. Как это продиагностировать?
Быть может, кто-то уже встречался с такой проблемой?
PS: Решил создать тему в этом разделе, а не в Development, т.к. основной задачей является всё-таки собрать кеды, а не ковыряться в дебрях планировщика задач.