Как передать флаг '-lm' или указать библиотеку для включения при использовании Autoreconf (Autoconf)?Autoreconf и <math.h> на Linux
Программа включает в себя, и я могу составить так:
gcc -std=c99 myprogram -lm
Но когда я компилирую VI AUTORECONF, я получаю сообщение об ошибке, говорящее
undefined reference to 'pow'
undefined reference to 'sqrt'
etc
Вопрос находится на Linux, той же программы компилируется без ошибок в OSX.
Как отредактировать configure.ac или Makefile.am, чтобы получить флаг -lm в gcc?
Как вы писали, он также компилируется правильно на Linux. 'atuoconf' - это инструмент построения, а не компилятор. Итак, вопрос в том, что он также правильно работает на OSX - используя те же инструменты. – Olaf
Он делает, но на Linux требуется несколько дополнительных флагов, -lm для одного, -std = c99 для другого. – chernevik
Вы, очевидно, ** ** используете разные инструменты для обеих систем. FYI: на Mac, 'gcc' на самом деле называет' clang'. Это разные компиляторы, поэтому они могут иметь разные значения по умолчанию и могут потребовать разные варианты. В общем, это плохая практика, чтобы полагаться на значения по умолчанию для инструмента. По-видимому, вы используете версию gcc до версии 5 для Linux, поскольку у нее есть 'gnu90' по умолчанию. Используйте более новую версию 5, и вы получите по умолчанию 'gnu11', который также должен скомпилировать код C99. Еще одной проблемой являются библиотеки по умолчанию. – Olaf