LINUX.ORG.RU

Баг, фича, или я идиот?


0

0

Сабж!

sqrt(4); - компилируется без проблем

Меняем на:

double n = 4;
sqrt(n);

/tmp/ccIgoZoD.o: In function `main':
cetrst.c:(.text+0xaf): undefined reference to `sqrt'
collect2: ld returned 1 exit status

Язык - pure C
gcc version 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)

★★★

Re: Баг, фича, или я идиот?

Попробуй в конце строки с вызовом gcc добавить -lm

(Просто sqrt(4) разворачивается интринсиком на этапе компиляции, и libm н для линковки не нужна).

Die-Hard ★★★★★ ()
Ответ на: Re: Баг, фича, или я идиот? от shuthdar

Re: Баг, фича, или я идиот?

> где хранятся дефолтные ключи для компиляции?

Вообще говоря, руками вбиты в исходники. И для разных компиляторов они разные.

Die-Hard ★★★★★ ()
Ответ на: Re: Баг, фича, или я идиот? от Teak

Re: Баг, фича, или я идиот?

> Вообще говоря, руками вбиты в исходники. И для разных компиляторов они разные.

ИМХО, это не совсем верно, по крайней мере для линукса. Кое-что можно понять/поменять в spec-файле, который имеет примерно такое имя: /usr/lib/gcc-lib/i386-suse-linux/3.2/specs.

jek_ ()
Ответ на: Re: Баг, фича, или я идиот? от jek_

Re: Баг, фича, или я идиот?

jek_:

> Кое-что можно понять/поменять в spec-файле, ...

Увы, все попсеет в этом мире... В последних версиях gcc спеки встроены:

$gcc -v Using built-in specs. Target: x86_64-suse-linux Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,f95,java,ada --disable-checking --with-gxx-include-dir=/usr/include/c++/4.0.2 --enable-java-awt=gtk --disable-libjava-multilib --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit --without-system-libunwind --host=x86_64-suse-linux Thread model: posix gcc version 4.0.2 20050901 (prerelease) (SUSE Linux)

Die-Hard ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.