1

Я получил последнюю, неизданную версию исходного кода ctags из репозитория svn, используя

svn co https://ctags.svn.sourceforge.net/svnroot/ctags

Я запустил ./configure , который завершился ошибкой:

config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
config.status: error: cannot find input file: config.h.in
[mirror@home ctags-5.7]$ echo $?
1

Затем я создал пустой файл с именем config.h.in , и теперь ./configure успешно.

configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating config.h
[mirror@home ctags-5.7]$ echo $?
0

Запуск make все еще не удался.

[mirror@home ctags-5.7]$ make
gcc -I. -I. -DHAVE_CONFIG_H -g -O2 -c args.c
In file included from args.c:17:
/usr/include/stdio.h:88: error: two or more data types in declaration specifiers
make: *** [args.o] Error 1
  • Почему это не работает?
  • Как мне собрать ctags из репозитория svn?

3 ответа3

3

Сбой из-за того, что (в отличие от подготовленных исходных архивов) svn repositroy не содержит промежуточных файлов, используемых автоинструментами.

Я не слишком знаком с AT или ctags, но попробуйте запустить automake и autoconf перед запуском ./configure снова. Процедура, вероятно, находится где-то в файле INSTALL или папке с документацией, вы можете поискать это.

Приложение:

Согласно (неофициальному) Gentoo ebuild, достаточно запустить autoreconf .

Приложение 2:

Как я уже сказал, я не гуру АТ, мне сказали, что в мире есть только двузначное число.

config.h не включен в репозиторий svn, потому что он не написан человеком и зависит только от других файлов в репозитории. В любом случае разработчикам приходится часто делать это заново, так как это будет просто дополнительный файл для загрузки, а затем сразу же удаляемый при проверке изменений.

С другой стороны, он входит в тарболлах для того , чтобы здание программного обеспечения менее болезненным. Я верю, что это также предотвращает некоторые проблемы, когда у людей разные версии AT, чем у разработчиков. В этом случае нет реальной обратной стороны, поскольку это не зависит от того, для какой системы или архитектуры вы строите, а другие файлы «обычно» не модифицируются при сборке из tarball. То есть, если у вас нет патчей, которые вам нужно применить. Тогда вам может понадобиться что-то восстановить в любом случае.

Мой подход к АТ - пробовать разные вещи, пока они не сработают или я не откажусь. Разные файлы появляются из разных команд, и некоторые команды магически запускают другие команды. На странице Википедии есть блок-схема. Я не нахожу это полезным, но, возможно, вы могли бы.

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

1

У меня была похожая проблема в моей системе Linux, которую я решил, запустив "autoheader" и "autoconf" (из подкаталога "trunk" распакованного архива) перед запуском «./configure». Последующие операции "make" и "make install" выполнялись без проблем.

Кажется, что autoconf знает, как сделать configure из configure.at (который был в tarball), но сначала вам нужно запустить autoheader, чтобы создать .in-файлы, которые используются configure для генерации заголовочных файлов, которые затем используются при вы на самом деле запускаете ./configure.

0

Почему бы вам не сделать $ sudo apt-get install exuberant-ctags или что-то еще, подходящее вашему вкусу Linux?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .