Неопределенная ссылка на pow
или floor
часто вызвана отсутствующей или неуместной опцией -lm
(см. this question).autotools - Исправить неопределенные ссылки на `pow 'и` floor'
Я видел эту ошибку в open source repository после запуска через рабочий процесс Autotools: aclocal
autoconf
automake --add-missing
./configure
make
.
Вот команда, нарушившая сборки с выхода макияжа:
gcc -pthread -g -O2 -lm -o 01_w_Defects bit_shift.o main.o buffer_overrun_dynamic.o memory_allocation_failure.o buffer_underrun_dynamic.o memory_leak.o cmp_funcadr.o not_return.o conflicting_cond.o null_pointer.o data_lost.o overrun_st.o data_overflow.o ow_memcpy.o data_underflow.o pow_related_errors.o dead_code.o ptr_subtraction.o dead_lock.o race_condition.o deletion_of_data_structure_sentinel.o redundant_cond.o double_free.o return_local.o double_lock.o sign_conv.o double_release.o sleep_lock.o endless_loop.o st_cross_thread_access.o free_nondynamic_allocated_memory.o st_overflow.o free_null_pointer.o stubs.o func_pointer.o st_underrun.o function_return_value_unchecked.o underrun_st.o improper_termination_of_block.o uninit_memory_access.o insign_code.o uninit_pointer.o invalid_extern_1.o uninit_var.o invalid_extern.o unlock_without_lock.o invalid_memory_access.o unused_var.o littlemem_st.o wrong_arguments_func_pointer.o livelock.o zero_division.o lock_never_unlock.o
Как вы можете видеть, -lm
приходит раньше всех файлов в команде сборки. Это должно закончиться. Если я переместил -lm
в конец и заново запустил команду, он будет работать.
Но это не устраняет проблему с корнем. Что пошло не так? Где я должен искать проблему или потенциальную проблему? Я предполагаю, что эта проблема может быть исправлена либо в Makefile.am
, либо в configure.ac
.
Это работает, спасибо! Предположительно, нужно делать то же самое для пола? Похоже, что это 'AC_SEARCH_LIBS' с' S'. – jtpereyda
Спасибо, я продолжаю делать эту ошибку ^^; И правильно, вы можете сделать это для 'floor' так же хорошо, хотя я не знаю ни одной библиотеки C, в которой' pow' и 'floor' находятся в разных библиотеках. –