Почему я не смог собрать ctags для vim?
Я получил последнюю, неизданную версию исходного кода 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 ответа
Сбой, потому что (в отличие от подготовленных исходных архивов) svn repositroy не содержит промежуточных файлов, используемых автоинструментами.
Я не слишком знаком с AT или ctags, но попробуйте запустить automake
а также autoconf
перед запуском ./configure
снова. Процедура, вероятно, находится где-то в INSTALL
файл или папку с документацией, вы можете посмотреть на это.
Приложение:
По словам (неофициального) Gentoo ebuild, работает autoreconf
должно быть достаточно.
Приложение 2:
Как я уже сказал, я не гуру AT, мне сказали, что в мире есть только двузначное число.
config.h
не включен в репозиторий svn, потому что он не написан человеком, и зависит только от других файлов в репозитории. В любом случае разработчикам приходится часто делать это заново, так как это будет просто дополнительный файл для загрузки, а затем сразу же удаляемый при проверке изменений.
С другой стороны, он включен в tar-архивы, чтобы сделать создание программного обеспечения менее болезненным. Я считаю, что это также предотвращает некоторые проблемы, когда у людей разные версии AT, чем у разработчиков. В этом случае нет реальной обратной стороны, поскольку это не зависит от того, для какой системы или архитектуры вы строите, а другие файлы "обычно" не модифицируются при сборке из tarball. То есть, если у вас нет патчей, которые вам нужно применить. Тогда вам может понадобиться восстановить что-либо в любом случае.
Мой подход к AT состоит в том, чтобы пробовать разные вещи, пока они не сработают или я не откажусь. Разные файлы появляются из разных команд, а некоторые команды магически запускают другие команды. На странице Википедии есть блок-схема. Я не считаю это полезным, но, возможно, вы могли бы.
Я предлагаю держаться подальше от этого. Если вы считаете, что вам нужно использовать его для своего собственного проекта, используйте cmake или scons или что-то еще, что работает хорошо и в то время просто.
У меня была похожая проблема в моей системе Linux, которую я решил, запустив "autoheader" и "autoconf" (из подкаталога "trunk" распакованного архива) перед запуском "./configure". Последующие операции "make" и "make install" выполнялись без проблем.
Кажется, что autoconf знает, как сделать configure из configure.at (который был в tarball), но сначала вам нужно запустить autoheader, чтобы создать.in-файлы, которые используются configure для генерации заголовочных файлов, которые затем используются при вы на самом деле запускаете./configure.
Почему ты не делаешь $ sudo apt-get install exuberant-ctags
или что-нибудь подходит вашему вкусу Linux?