когда я пытаюсь скомпилировать
#include <math.h>
#include <stdio.h>
int main()
{
double m=1.66666;
double k=sqrtf(m);
return 0;
}
, используя следующую команду
/user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/bin/gcc -o test.out test.cpp -lm
, он выдает
ld: 0711-317 ERROR: Undefined symbol: .sqrtf
ld: 0711-345 Использовать -bloadmapили опция -bnoquiet для получения дополнительной информации.collect2: error: ld вернул 8 состояние выхода
Но приведенный ниже код успешно компилируется
#include <math.h>
#include <stdio.h>
int main()
{
double k=sqrtf(1.66666);
return 0;
}
Я использую gcc4.8.5 для компиляции кода. Аналогичный код успешно компилируется в AIX6.1, нона новом компьютере происходит сбой (AIX7.1)
Подобный вопрос уже существует на этом: Почему я получаю ошибку «неопределенная ссылка на sqrt», даже если я включаю заголовок math.h? но это не работает для меня.
Обновление: когда я использую sqrt
вместо sqrtf
, код компилируется успешно, использование команды '/user/unicore/rs6000aix/compiler/gcc4.8.5/aix6.1/bin/gcc -o test.out test.cpp -lm to compile it.
sqrtf` завершается неудачно с или без ссылки на библиотеку математики.
edit2: вывод команды nm
$ nm -g -X32 /usr/lib/libm.a | grep sqrtf
.csqrtf T 512
csqrtf D 4196 12
$ nm -g -X64 /usr/lib/libm.a | grep sqrtf
.csqrtf T 512
csqrtf D 4296 24
edit 3: bos.adt.libm.7.1.3.47
был установлен без sqrtf
.Установил bos.adt.libm.7.1.4.30.bff
и начал нормально работать.