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