#c #ubuntu #gcc #makefile #autoconf
#c #ubuntu #gcc #makefile #автоконфигурация
Вопрос:
Я пытаюсь запустить проект C «https://github.com/karimaechihabi/lernaean-hydra/tree/91b480fb633ab4730a2cf1f5573d20d55b39b71e/hydra1/code/ucr-suite» , выполнив те же действия для автоматического создания конфигурации и makefile, что и в read me :
>./autogen.sh
>./configure
>make
Но когда я запускаю make file, я получил эту ошибку с неопределенной ссылкой :
>usr/bin/x86_64-linux-gnu-ld: src/bin_serial-serial_scan.o: in function `main':
/home/zeraph/lernaean-hydra/hydra1/code/ucr-suite/src/serial_scan.c:143: undefined reference to `init_serial_stats'
/usr/bin/x86_64-linux-gnu-ld: /home/zeraph/lernaean-hydra/hydra1/code/ucr-suite/src/serial_scan.c:147: undefined reference to `serial_scan'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:486: bin/serial] Error 1
make[1]: Leaving directory '/home/zeraph/lernaean-hydra/hydra1/code/ucr-suite'
make: *** [Makefile:335: all] Error 2
Любая помощь, пожалуйста?
Ps: При запуске команды конфигурации для создания makefile я также получил это предупреждение :
>/usr/share/automake-1.16/am/library.am: warning: 'lib/libserial.a': linking libraries using a non-POSIX
/usr/share/automake-1.16/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
Комментарии:
1. Может быть, в проекте есть ошибки? Вам нужно будет еще немного покопаться в коде и выяснить. Если вы не можете заставить его работать, откройте проблему, если сможете, и это уместно.
2. Похоже, у него проблемы с зависимостями make, он пытается создать bin / serial до того, как будет собран lib / libserial.a . Вы можете сделать
make lib/libserial.a
сначала, а затемmake
построить bin / serial, но это приводит к ошибкам из-за множества определенных глобальных переменных.3. Спасибо @IanAbbott
Ответ №1:
Проблемы были с зависимостями make (попытка построить bin / serial до того, как был собран lib / libserial.a); Решение: сначала сначала создайте lib / libserial.a, а затем сделайте для сборки bin / serial.
Комментарии:
1. Это стоит того, чтобы придерживаться проблемы и найти решение. (вероятно, вам также следует открыть заявку на github)