Неопределенная ссылка на математические функции при связывании с gcc

Я получаю сообщение об ошибке при использовании make для установки программы. Полный шаг с ошибкой с ошибкой выглядит следующим образом:

 gcc -g -O2 -fopenmp -L/usr/lib -lcfitsio -lm -o lenstool_tab e_nfwg.o lenstool_tab.o midpnt.o nrutil.o polint.o qromo.o read_bin.o lenstool_tab.o: In function `main': /usr/local/src/lenstool-6.8/table_src/lenstool_tab.c:73: undefined reference to `log' /usr/local/src/lenstool-6.8/table_src/lenstool_tab.c:73: undefined reference to `log' e_nfwg.o: In function `surfdens2': /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:133: undefined reference to `pow' /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:130: undefined reference to `sin' /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:138: undefined reference to `pow' /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:140: undefined reference to `sin' /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:140: undefined reference to `pow' /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:144: undefined reference to `sin' /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:144: undefined reference to `pow' e_nfwg.o: In function `nfwg_kappa': /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:63: undefined reference to `pow' e_nfwg.o: In function `scmass': /usr/local/src/lenstool-6.8/table_src/e_nfwg.c:165: undefined reference to `pow' collect2: error: ld returned 1 exit status make[1]: *** [lenstool_tab] Error 1 make[1]: Leaving directory `/usr/local/src/lenstool-6.8/table_src' make: *** [all-recursive] Error 1 

Таким образом, очевидно, что существует проблема с привязкой к математической библиотеке. Я проверил, что эти коды содержат #include<math.h> . Основная причина этой проблемы, как правило, связана с отсутствием -lm в команде компиляции, но, как вы видите, она появляется в приведенном выше. Я добавил -lm к различным частям файла makefile, который казался подходящим, но это не помогло. Я включу makefile здесь, если это поможет. Должен ли я модифицировать make-файл, чтобы исправить это? Я искал эту проблему в Интернете, но ответы, казалось, не рассматривались в make-файле. Я прочитал предложение в другом потоке, чтобы изменить config.status, чтобы включить -lm , но было неясно, где это сделать. Я уже установил эту программу на Mac без проблем, но теперь я использую Ubuntu 14, и я получаю эту ошибку. Любая помощь высоко ценится! Благодарю.

One Solution collect form web for “Неопределенная ссылка на математические функции при связывании с gcc”

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

 gcc -g -O2 -fopenmp -L/usr/lib -o lenstool_tab e_nfwg.o lenstool_tab.o midpnt.o nrutil.o polint.o qromo.o read_bin.o lenstool_tab.o -lcfitsio -lm 

Это должно решить вашу проблему. Вы можете устранить проблему в своем Makefile, чтобы библиотеки были указаны позже.

  • Как использовать afl-fuzz (American Fuzzy Lop) с openssl
  • CentOS yum install gcc error: glibc-common конфликты с glibc
  • Используя * Autotools *, как мне сохранить список компиляторов в файле по файлу?
  • -fstack-protector-strong доступен, но компилятор разбивается при компиляции ядра с использованием gcc
  • UNIX be-spoke Shell-Script / Команды
  • make : *** Ошибка 2 make : *** Ошибка 2
  • Как отправить содержимое буфера emacs в gcc без записи на диск?
  • Пакеты для восстановления после обновления gcc на системах gentoo
  • Невозможно использовать VMWare Workstation 12
  • «GLIBC» не может использоваться, когда я установил gcc 5.1.0
  • Как установить последнюю стабильную версию GCC в Linux Mint?
  • Linux и Unix - лучшая ОС в мире.