Ошибка компиляции GCC Ubuntu: неопределенная ссылка на

#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)