Ein undefinierter Verweis auf pow
oder floor
wird oft durch eine fehlende oder falsche -lm
Option verursacht (siehe this question).autotools - Fix undefinierter Verweis auf `pow 'und` floor'
habe ich diesen Fehler in einem open source repository nach dem Autotools Workflow läuft durch: aclocal
autoconf
automake --add-missing
./configure
make
. Hier
ist der säumige Build Befehl aus dem Make-Ausgang:
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
Wie Sie sehen können, -lm
kommt vor, alle Dateien in dem Build-Befehl. Es sollte am Ende kommen. Wenn ich -lm
an das Ende verschiebe und den Befehl erneut ausführe, funktioniert es.
Aber das behebt das Grundproblem nicht. Was schief gelaufen ist? Wo sollte ich nach dem Problem oder einer möglichen Lösung suchen? Ich kann mir vorstellen, dass dieses Problem entweder in Makefile.am
oder configure.ac
behoben werden kann.
Das funktioniert, danke! Vermutlich sollte man das gleiche für den Boden tun? Sieht so aus, als wäre es 'AC_SEARCH_LIBS' mit einem' S'. – jtpereyda
Danke, ich mache diesen Fehler ^^; Und richtig, du kannst das genauso gut für "floor" machen, obwohl ich keine C-Bibliothek kenne, in der sich 'pow' und' floor' in verschiedenen Bibliotheken befinden. –