Ошибка с Ubuntu

Я портирую какой-то действительно старый (и обширную базу) код из CentOS 6 в Ubuntu 14.04. Обратите внимание, я установил ожидаемую старую версию gcc, исправил ссылки на ссылки и т. Д.

Моя попытка сборки прогрессирует, но я застрял на одном. Там есть файл C, который пытается создать структуру типа rusage, но среда Ubuntu выдает мне следующую ошибку: error: storage size of 'rusage' isn't known

Насколько я могу судить, все мои пути выглядят правильно. Я даже посмотрел системные файлы time.h и resource.h в каждой системе (CentOS, где он работает, и Ubuntu, где он не работает). Похоже, что есть ссылки на файл wait.h, где фактически определяется rusage.

Что еще я мог упустить в своей среде Ubuntu?

Редактировать: Добавление более подробной информации о MCVE...

Моя сборка останавливается со следующей ошибкой:

vmodem.c:6747: error: storage size of 'rusage' isn't known

Эта строка в файле просто:

struct rusage rusage

Все необходимые включения также находятся в этом файле (<sys/time.h>, <sys/wait.h>, так далее.)

Не уверен, что еще я могу предоставить в этом случае...

2 ответа

Справочная страница для getrusage на CentOS 6 и Ubuntu 14.04 говорится, что <sys/time.h> а также <sys/resource.h>,

Вы упомянули, что вы включаете <sys/wait.h>, Имеет предварительную декларацию struct rusage; так что декларации wait3 а также wait4 будет действительным, но этого прямого объявления недостаточно, чтобы позволить вам объявить структуру типа rusage,

Вещи работают на CentOS 6, потому что CentOS 6 wait.h содержит строку #include <sys/resource.h>, а также resource.h полностью заявляет struct rusage, но Ubuntu 14.04 wait.h не содержит #include <sys/resource.h> линия.

Благодаря coredump и Евгению Ш. за советы... добавление #include <sys/resource.h> был трюк.

Должно быть, это было то, что работало в CentOS, но не в Ubuntu. В любом случае, простое включение файла заголовка ресурса не должно повредить ничего.

Другие вопросы по тегам