Есть вопрос! → Fedora 14 - не линкуются функции из математической библиотеки
Люди. кто-нибудь сталкивался с такой вот проблемой: у меня была некая прикладная программа на C/C++, состоящая из нескольких файлов исходных текстов. На ASP Linux 12 Carbon (т.е. Fedora 7) всё собиралось и работало. На Russian Fedora Remix 14.1 работает, что было собрано на Fedora 7, но не собирается при попытке компиляции-линковки (gcc, g++). Компилируется нормально, но линковщик выдаёт неопределённую ссылку на функцию fabs(double). Аналогичная реакция возникает и на любую другую функцию из математической библиотеки. Добавление опции -lm в командную строку линковки ничего не даёт. Повторяю, что на Fedora 7, Red Hat Enterprise Linux 5.x всё линкуется без вопросов. Ещё вот что интересно — пишешь простую тестовую программку на C++ с вызовом fabs (или sin, или cos) внутри — линкуется на ура и без добавления -lm. Но там один .o -файл, а в той, которая не собирается — их несколько. Кто-нибудь сталкивался с этим? Подскажите, куда копать!
- +3
- konstantin66
- 04 апреля 2011, 09:37
s -la /usr/lib/libm.*
-rw-r--r-- 1 root root 514776 Июл 17 2007 /usr/lib/libm.a
lrwxrwxrwx 1 root root 19 Янв 28 2008 /usr/lib/libm.so -> ../../lib/libm.so.6
Та же команда в Russian Fedora Remix 14 даёт только динамическую версию libm, а статическую не даёт:
s -la /usr/lib/libm.*
-rw-r--r-- 1 root root 514776 Июл 17 2007 /usr/lib/libm.a
lrwxrwxrwx 1 root root 19 Янв 28 2008 /usr/lib/libm.so -> ../../lib/libm.so.6
Может, тут следует копать? Тогда вопрос: а где взять libm.a для Fedora 14? Т.е. какой rpm её содержать должен — кто-нибудь в курсе?
#include <stdio.h>
double fabs(double);
int main (int argc, char **argv) {
float x=9.0;
printf(«fabs=%7.2f\n»,x);
}
Теперь g++ tm.cpp -o tm — отлуп:
tm.cpp:(.text+0x1a): undefined reference to `fabs(double)'
Когда убираем строчку double fabs(double); и пишем просто #include <math.h> — всё пролетает на ура. Надо в math.h заглянуть — видать, там какая-то хитрость. Хотя man fabs говорит, что double fabs(double); — это нормальное объявление.
Удачи с Федорой.