Системный файл C ++ bits / stat.h неожиданно разрывается с ошибкой: поле «st_atim» имеет неполный тип & quot;

Я портирую через большую, старую систему, которая, как было известно, работает, на 64-битную Linux Ubuntu. Система использует FLTK, обновление до 1.3.2, и я использую NetBeans. Файл содержит базовую универсальную /FL/Fl.H в качестве первой строки. Это включает в себя более новый активатор Unicode /FL/fl_utf8.h. Это включает в себя системный файл <sys/stat.h>, который затем включает в себя системный файл <bits/stat.h>, При подключении и -I, включая различные различные каталоги, системные файлы внезапно ломаются во время компиляции с:

In file included from /usr/include/sys/stat.h:107,
/usr/include/bits/stat.h:88: error: field ‘st_atim’ has incomplete type
/usr/include/bits/stat.h:89: error: field ‘st_mtim’ has incomplete type
/usr/include/bits/stat.h:90: error: field ‘st_ctim’ has incomplete type
/usr/include/bits/stat.h:149: error: field ‘st_atim’ has incomplete type
/usr/include/bits/stat.h:150: error: field ‘st_mtim’ has incomplete type
/usr/include/bits/stat.h:151: error: field ‘st_ctim’ has incomplete type

Последний FLTK не работает? Аллергия на 64 бита? Интернет предлагает ошибку в системном заголовочном файле? glibc несовместим? Добавить _GNU_SOURCE? Не USE_MISC? Много блуждающих в блогах, что здесь происходит?

4

Решение

Краткий ответ: кто-то где-то создал случайный файл под названием «time.hMsgstr «. Ваш путь включения включает каталог, в котором он находится. Это приводит к короткому замыканию системы неочевидным способом. Файл даже не должен быть используемый, это может быть случайный тестовый файл, который один из программистов собирает сбоку, а не встроенный. Он просто должен существовать, и быть доступным в вашем большем включенном пути. Этого будет достаточно для вас Не проблема ФЛТК вообще.

Чем дольше ответ: stat.h был обновлен с на основе __time_t st_atime и т.д. на основе struct timespec st_atim и т. д. [обратите внимание, что отсутствует конец] для обработки временных меток с наносекундным разрешением. Но временные характеристики определены в системе time.h, Если вы включаете случайный time.h где-то в своем пути, это затеняет включение, стирая определение struct timespec.

По-видимому, эта же проблема также является проблемой с FFMpeg v1.0 и / include / libavutil.

Итог: настаивайте, чтобы никто никогда не создавал файл под названием «time.h».

10

Другие решения

На самом деле есть довольно солидное быстрое решение, которое я использовал, когда у меня была эта проблема в Centos 6.5. Мысль, которой я поделюсь, если кто-нибудь еще наткнется на эту тему. Существует хранилище, созданное и поддерживаемое https://github.com/tony2001 это решает эту проблему с конфликтом файлов time.h.

Следуйте ниже, чтобы исправить это:

git clone https://github.com/tony2001/ffmpeg-php.git
cd ffmpeg-php
phpize
./configure
make && make install
3

Я понимаю, что этот вопрос старый, но я опубликую свой опыт, так как сейчас я просто изучаю книгу, и это случилось со мной. Я смог решить проблему, перезапустив виртуальную машину, на которой я запускаю диск.

То, что я думаю, случилось для меня, было то, что я управлял виртуальной машиной, устанавливая образ диска к одному из виртуальных дисков моего компьютера. По окончании рабочего дня я сохранял состояние своих виртуальных машин, а затем загружал их и продолжал работать над ним позже. Однако иногда я перезагружал свой физический компьютер, который отключал образ компакт-диска с моего диска, но я не заметил этого, потому что виртуальная машина запускалась без проблем, так как я просто перезагружал состояние сохранения, пока ваша проблема не случилась со мной ,

Повторная установка образа диска и последующий перезапуск виртуальной машины решили проблему для меня, и это может быть для других, кто запускает образ livecd через виртуальную машину. Единственное, что я могу подумать, это могло бы объяснить, что некоторые из программ книги могут испортить некоторые из включений, а перезапуск просто возвращает машину в исходное рабочее состояние.

Если вы запускаете диск физически, это, вероятно, вам не поможет, но перезагрузка компьютера может быть хорошей попыткой. Как примечание, я изначально запускал компакт-диск физически на своем старом ноутбуке, и все программы книги работали нормально. Это было неприятно, поскольку виртуальная машина доставляла мне проблемы, из-за которых у меня изначально не было физического диска.

0
По вопросам рекламы [email protected]