2013-12-07 3 views
0

У меня есть файл cmdscan.c, который содержит только функцию и структуру. Моя основная программа hsh.c использует функцию и struct из cmdscan.c. Я точно следил за инструкциями на моем профессоре, но это не сработает. Даже если я отредактирую что-нибудь, за исключением и запустите, сделайте так, что ничего не поделаешь. И когда я использую make distcheck, я получаю сообщение об ошибке, которое не может найти hsh.c.Как автоматизировать исходные файлы C

Это то, что мой каталог содержит:

Makefile.am:

bin_PROGRAMS = hsh 
    hsh_SOURCES = hsh.c cmdscan.c 

configure.in:

AC_INIT(hsh.c) 
    AM_INIT_AUTOMAKE(hsh,1.0) 
    AC_PROG_CC 
    AC_PROG_INSTALL 
    AC_OUTPUT(Makefile) 

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

aclocal 
autoconf 
touch README AUTHORS NEWS ChangeLog 
automake -a 
configure 
make 

Примечание: при запуске «настроить» он говорит команда не найдена. Но я могу запустить ./configure, вот что я сделал.

Когда я последнюю команду «сделать» я получаю:

make: Nothing to be done for `all'. 

Даже если я что-то изменить и сохранить его. Поэтому, когда я бегу

make distcheck 

я получаю:

configure: error: cannot find sources (hsh.c) in .. 
make: *** [distcheck] Error 1 

Если я бегу:

gcc cmdscan.c hsh.c -o hsh 

Он работает.

+0

Какую документацию вы читаете, советуя имя 'configure.in'? Это * очень * старый. –

+0

Я только что выполнил инструкции, которые он дал в pdf для задания. Я отправил его по электронной почте, но он не ответил. – MeesterMarcus

+0

И добавление имени и версии пакета в 'AM_INIT_AUTOMAKE' вместо' AC_INIT' еще более устарело! –

ответ

1

У вас есть какие-то ошибки, как:

AC_INIT(hsh.c), AM_INIT_AUTOMAKE(hsh,1.0) instead use for example: 
AC_INIT([hsh],[1.0]) 
AM_INIT_AUTOMAKE([1.14]) 

где «1,14» моя Automake версия, вы можете увидеть это: Automake --version

Если вам нужен быстрый учебник см: http://embelinux.blogspot.de/2013/09/autotools1-hola-mundo-la-autotools.html Если Вам нужна сильная перспективе документация: APT-получить установку Autoconf (см/USR/доли/DOC/AUTOCONF-документ) и скачать http://www.gnu.org/software/automake/manual/automake.pdf

AC_INIT (package, version, [bug-report], [tarname], [url]) 

Обработать любые аргументы командной строки и выполнить инициализацию и проверку. Задайте имя пакета и его версию. Они обычно используются в поддержке '--version' , в том числе конфигурации. Необязательный аргумент error-report должен быть электронной почтой, на которую пользователи должны отправлять отчеты об ошибках. Пакет tarname отличается от пакета : последний обозначает полное имя пакета (например, «GNU Autoconf»), а - первый вариант, предназначенный для распространения имен тарелок (например, «autoconf»).По умолчанию используется пакет с разделителем «GNU», нижний и все символы, кроме буквенно-цифровых символов , а символы подчеркивания изменены на «-». Если предоставлено, url должен быть домашней страницей для пакета . Аргументы AC_INIT должны быть статическими, то есть не должно быть никаких команд оболочки, кавычек или строк новой строки, но они могут быть вычислены с помощью M4. Это связано с тем, что строки информации пакета разворачиваются в M4 раз в несколько контекстов и должны предоставить тот же текст во время оболочки, который используется в строках с одной кавычкой, строки с двойными кавычками , цитируемые здесь-документы или без кавычек здесь, документы. Допустимо использовать m4_esyscmd или m4_esyscmd_s для вычисления строки версии, которая изменяется с каждой привязкой к системе управления версиями (на самом деле Autoconf делает это для всех сборок дерева разработки, созданного между выпусками).

AM_INIT_AUTOMAKE([OPTIONS]) 

Выполняет много макросов, необходимых для правильной работы сгенерированных Makefile. Сегодня AM_INIT_AUTOMAKE вызывается с единственным аргументом: список , разделенный пробелом, параметров Automake, которые должны применяться к каждому Makefile.am в дереве . Эффект выглядит так, как если бы каждый параметр был указан в AUTOMAKE_OPTIONS (см. Глава 17 [Варианты], стр. 117). Этот макрос можно также вызвать в другой устаревшей форме: AM_INIT_ АВТОМАК (ПАКЕТ, ВЕРСИЯ, [НЕТ-ОПРЕД.]). В этой форме есть два аргумента : пакет и номер версии. Это использование в основном устарело, потому что пакет и версия могут быть получены от Макрос AC_INIT от Autoconf. Однако, в отличие от вызовов AC_INIT, этот вызов AM_INIT_AUTOMAKE поддерживает оболочку расширений переменных в аргументах PACKAGE и VERSION, и это может быть по-прежнему полезно в некоторых выбранных ситуациях. Мы надеемся, что будущие версии Autoconf улучшат поддержку версий пакетов, заданных динамически при настройке времени выполнения; когда (и если) это произойдет, поддержка двух аргументов Вызов AM_INIT_AUTOMAKE, скорее всего, будет удален из Automake.

0

Проблема закончилась тем, что мне пришлось изменить configure.in на configure.ac. Затем мне пришлось добавить еще один параметр в мои операторы открытого файла, 0666. После этого все выглядит хорошо, и он компилируется и позволяет мне создать пакет. В pdf не было такой информации -_-.

Смежные вопросы