binutils выдает ошибку для readelf

Когда я запускаю make binutils/readelf, я получаю следующую ошибку:

In file included from readelf.c:43:0:
sysdep.h:23:25: fatal error: alloca-conf.h: No such file or directory
 #include "alloca-conf.h"

Какую зависимость мне не хватает? Как мне просто собрать и скомпилировать readelf, не создавая остальные binutils?


person Nemo_Sol    schedule 16.12.2017    source источник
comment
Поскольку #include "alloca-conf.h" использует форму кавычек #include, я ожидаю, что это часть дистрибутива binutils. Запускали ли вы find <src_root> | grep "alloca-conf", чтобы увидеть, существуют ли какие-либо файлы с похожими именами... которые, возможно, необходимо преобразовать в отсутствующий заголовок на шаге настройки, который вы пропускаете?   -  person lockcmpxchg8b    schedule 17.12.2017
comment
Я не уверен, что ваша цель (построение одного двоичного файла) будет возможной без большой работы. В binutils есть много взаимозависимостей, и разделить их будет сложно, если не невозможно. Я также не уверен, что это стоит того с точки зрения экономии времени: компиляция всех binutils (начиная с ./configure) занимает примерно 40 секунд на моем не очень мощном ноутбуке (с make -j4). Вы могли бы перекомпилировать весь проект с нуля более 300 раз с тех пор, как задали свой вопрос четыре часа назад...   -  person larsks    schedule 17.12.2017


Ответы (1)


Что на самом деле произошло, так это то, что у вас нет Makefile или, по крайней мере, ни одной определяющей binutils/readelf цели. Но так как есть файл binutils/readelf.c, make все равно запустился и попытался скомпилировать и связать binutils/readelf, используя его неявные правила шаблона... и потерпел неудачу, потому что этот исходный файл не может быть собран без соответствующей конфигурации.

Это просто для того, чтобы добавить немного больше деталей. Короче говоря, запустите ./configure и make, как предложено в комментариях, и соберите получившийся readelf. Гораздо проще, чем пытаться изолировать сборку отдельного элемента из проекта, основанного на автоинструментах. Вы добавляете -I к CFLAGS, чтобы найти alloca-conf.h, вы просто столкнетесь с другой проблемой.

person Ondrej K.    schedule 11.02.2018