c math linker problemy na Ubuntu 11.10
Jakiś dziwny błąd pojawił się po uaktualnieniu mojego Ubuntu z (10.11, 11.04 i dont know)
do 11.10.
Dostaję undefined reference to 'sqrt'
Podczas korzystania z matematyki.h i łączenie z -lm
Kompiluję z gcc -Wall -Werror -g -Iinclude/ -lm lib/matrix.c src/analyse.c -o bin/analyse.o
oba pliki źródłowe używają i dołączają math.h.
Ten kod skompilowany bez problemów i nie zmieniłem wiele od aktualizacji, ale teraz nie będzie działać.
Czy masz jakieś sugestie co mogę zrobić, aby znaleźć błąd?
Przepraszam, jeśli to pytanie zostało zadane wcześniej; tam jest tak wiele postów o błędach linkera matematycznego i nie znalazłem pasującego
5 answers
Biblioteka, której używasz, musi być umieszczona po plikach, które jej używają, gdy używasz jej z linii poleceń. Umieść -lm
on po plikach C w wierszu poleceń.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 18:27:12
Rozwiązany , to nie jest powszechny brakujący -LM problem! Jestem w tej samej sytuacji po aktualizacji do (K) ubuntu 11.10!
$ whereis math.h
math: /usr/include/math.h
Makefile:
CC=gcc
CFLAGS=--std=c99 -g -pedantic -Wall -lm
uname:
Linux idefix 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
Naprawdę musisz umieścić -LM swith po -o foo foo.C parametr
Output:
pidi@idefix:~/projekt1$ make
gcc -o b1 b1.c --std=c99 -g -pedantic -Wall -lm
pidi@idefix:~/projekt1$
Więc Zamień swoje flagi w Makefile! Chłopaki. To całkiem nowy (i poważny) błąd!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 11:51:45
Jest to problem spowodowany domyślną aktywacją flagi gcc --as-needed
w linkerze
Więcej informacji tutaj: http://www.gentoo.org/proj/en/qa/asneeded.xml
Prosty fix (zadziałał przynajmniej dla mnie):
Dodaj -Wl,--no-as-needed
do linkera
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-09 15:06:35
Znalazłem ten sam problem po aktualizacji Ubuntu do wersji 11.10. Używam Netbeans do rozwijania i rozwiązywania problemu, określając standardową bibliotekę "Mathematics" w następujący sposób:
Kliknij prawym przyciskiem myszy na projekcie, kliknij na właściwości, wybierz "Linker" w menu, kliknij na "Libraries", a następnie "Add Standard Library" wybierając "Mathematics".
Podczas kompilacji opcja '- lm' jest umieszczana po wszystkich innych opcjach i działa. Prawdopodobnie ta wersja gcc podąża za specyficznym architektury i oczekuje bibliotek na końcu wiersza kompilacji poleceń.
Zdrówko!D.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-15 15:26:59
cc filename.c -lm
Po prostu spróbuj..........☻Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-14 08:07:02