The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"отсутствуют log2 и log2f"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"отсутствуют log2 и log2f"  
Сообщение от jeno (ok) on 03-Фев-09, 09:53 
Добрый день.

Пытаюсь собрать исходники в которых используется функция log2f, как я понимаю, эта функция просто расширение log() и logf(), и по стандартам С99 должна быть в комплекте...но ее нет =( (понятное дело, ошибка, и компиляция прекращается)

вот что точно оно пишет:

gcc -o x264 x264.o matroska.o muxers.o libx264.a -lm -lpthread -s
libx264.a(analyse.o)(.text+0xe56): In function `x264_mb_analyse_load_costs':
: undefined reference to `log2f'
gmake: *** [x264] Error 1

как это можно исправить ? где ее взять, куда добавить?!

заранее огромное спасибо! ) надеюсь тут найду решение...уже несколько дней сижу над этим =(

ОС: freebsd 7.1

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "отсутствуют log2 и log2f"  
Сообщение от const86 (ok) on 03-Фев-09, 13:21 
Попробуй -ffast-math добавить.
А вообще, проблема в libm, надо смотреть доки на предмет совместимости с С99.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "отсутствуют log2 и log2f"  
Сообщение от jeno (ok) on 03-Фев-09, 13:29 
>Попробуй -ffast-math добавить.
>А вообще, проблема в libm, надо смотреть доки на предмет совместимости с
>С99.

не помогло (  и -ffast-math уже было в config.mak'e =\

а как можно обновить этот libm? чтоб он был по стандартам С99...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "отсутствуют log2 и log2f"  
Сообщение от a (??) on 03-Фев-09, 21:39 
Возможные варианты:
1. Добавить к компилятору флаг gcc -std=c99
2. Попробывать заменить log2f на log2
3. Вспомнить арифметику и написать свою функцию log2f

log2f.c
#include <math.h>
float log2f(float a){return logf(a)/logf(2.0);}

gcc -o log2f.o log2f.c
gcc -o x264 x264.o log2f.o matroska.o muxers.o libx264.a -lm -lpthread -s

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "отсутствуют log2 и log2f"  
Сообщение от jeno (ok) on 03-Фев-09, 23:58 
>[оверквотинг удален]
>1. Добавить к компилятору флаг gcc -std=c99
>2. Попробывать заменить log2f на log2
>3. Вспомнить арифметику и написать свою функцию log2f
>
>log2f.c
>#include <math.h>
>float log2f(float a){return logf(a)/logf(2.0);}
>
>gcc -o log2f.o log2f.c
>gcc -o x264 x264.o log2f.o matroska.o muxers.o libx264.a -lm -lpthread -s

огромное спасибо! ) просто заменил log2f в исходнике )
все скомпилировалось отлично...

но все же...как быть в будущем? (возможно не у одного меня такие проблемы есть или будут)

>Добавить к компилятору флаг gcc -std=c99

пробовал, не помогло...

а вот вторые 2 варианта понятное дело рабочие, но не править же все исходники которые собираешь =\

как обновить этот самый libm? возможно пересобрать...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "отсутствуют log2 и log2f"  
Сообщение от const86 (ok) on 06-Фев-09, 01:03 
>float log2f(float a){return logf(a)/logf(2.0);}

Осторожнее с этим надо: скорость и точность страдают значительно. На скорость можно плюнуть, а вот из-за погрешности прога может работать неправильно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру