Автор Тема: [Desktop 4.0] gcc Не видит libm.a  (Прочитано 5405 раз)

Оффлайн marsijanin

  • Начинающий
  • *
  • Сообщений: 2
[Desktop 4.0] gcc Не видит libm.a
« : 19.09.2008 15:59:59 »
Уже задавал тот же вопрос на LOR'e.

Имеем  AltLinux Desktop 4.0 с установленным gcc и glibc-devel-static.

При попытке собрать тестовый пример с использованием math.h :

% cat test.c
#include <stdio.h>
#include <math.h>

int main (void)
{
   printf("%f\n", sin(1));
   return 0;
}

gcc орёт, что ничего про то, как такой пример собрать не знает:




mainstand [ls -l /usr/lib/libm.a] ~/Documents                      3:35
% gcc-4.1 -v -L/usr/lib -lm test.c -o test
Используются внутренние спецификации.
Целевая архитектура: i586-alt-linux
Параметры конфигурации: ../configure --host=i586-alt-linux --build=i586-alt-linux --target=i586-alt-linux --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --without-included-gettext --program-suffix=-4.1 --with-slibdir=/lib --enable-shared --enable-__cxa_atexit --enable-threads=posix --enable-checking=release --with-system-zlib --without-included-gettext --disable-multilib --enable-languages=c,c++,fortran,objc,obj-c++,treelang,java,ada --enable-java-awt=gtk --disable-plugin --with-native-libdir=/usr/lib/gcj-4.1 --enable-libgcj-multifile --with-cpu=i586 --with-arch=i586 --with-tune=pentium4
Модель многопотоковости: posix
gcc версия 4.1.1 20070105 (ALT Linux, build 4.1.1-alt11)
 /usr/libexec/gcc/i586-alt-linux/4.1.1/cc1 -D_FORTIFY_SOURCE=2 -quiet -v test.c -fstack-protector -quiet -dumpbase test.c -march=i586 -auxbase test -version -o /home/marsijanin/tmp/cc11WHIy.s
несуществующий каталог "/usr/lib/gcc/i586-alt-linux/4.1.1/../../../../i586-alt-linux/include" проигнорирован
порядок поиска для #include "...":
порядок поиска для #include <...>:
 /usr/local/include
 /usr/lib/gcc/i586-alt-linux/4.1.1/include
 /usr/include
конец списка поиска
GNU C версия 4.1.1 20070105 (ALT Linux, build 4.1.1-alt11) (i586-alt-linux)
   скомпилировано GNU C версия 4.1.1 20070105 (ALT Linux, build 4.1.1-alt11).
эвристики GGC: --param ggc-min-expand=98 --param ggc-min-heapsize=128316
Compiler executable checksum: 47b67d78d2d55d8e46d637540ceaca3e
 as -V -Qy -o /home/marsijanin/tmp/ccgsT8H0.o /home/marsijanin/tmp/cc11WHIy.s
GNU assembler version 2.17.50.0.6 (i586-alt-linux) using BFD version 2.17.50.0.6 20061020
 /usr/libexec/gcc/i586-alt-linux/4.1.1/collect2 --as-needed --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -o test /usr/lib/gcc/i586-alt-linux/4.1.1/../../../crt1.o /usr/lib/gcc/i586-alt-linux/4.1.1/../../../crti.o /usr/lib/gcc/i586-alt-linux/4.1.1/crtbegin.o -L/usr/lib -L/usr/lib/gcc/i586-alt-linux/4.1.1 -L/usr/lib/gcc/i586-alt-linux/4.1.1 -L/usr/lib/gcc/i586-alt-linux/4.1.1/../../.. -lm /home/marsijanin/tmp/ccgsT8H0.o -lgcc --as-needed -lgcc_s -lc -lgcc --as-needed -lgcc_s /usr/lib/gcc/i586-alt-linux/4.1.1/crtend.o /usr/lib/gcc/i586-alt-linux/4.1.1/../../../crtn.o
/home/marsijanin/tmp/ccgsT8H0.o: In function `main':
test.c:(.text+0x21): undefined reference to `sin'
collect2: выполнение ld завершилось с кодом возврата 1

При этом сама либа есть:
% ls -l /usr/lib/libm.a               
-rw-r--r-- 1 root root 522040 Янв 25  2007 /usr/lib/libm.a
 

Собственно вопрос: что ещё в Desktop 4.0 нужно доставить, что-бы gccнаконец смог увидеть libm.a?

Оффлайн dottedmag

  • /usr/sbin/control
  • *******
  • Сообщений: 235
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #1 : 19.09.2008 16:02:34 »
Прочитать, наконец документацию: http://www.altlinux.org/UpStream/AsNeeded
Debian Lenny

Оффлайн thresh

  • alt linux team
  • ***
  • Сообщений: 10
    • Email
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #2 : 19.09.2008 16:03:42 »
-lm в конец строчки линковки, это фича линкера в 4.0+

http://www.altlinux.org/UpStream/AsNeeded

Оффлайн marsijanin

  • Начинающий
  • *
  • Сообщений: 2
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #3 : 19.09.2008 16:07:56 »
"Я идиот - убейте меня кто нибудь" (ц)

Спасибо. Пойду sed'ить Make файлы.

Оффлайн raorn

  • alt linux team
  • ***
  • Сообщений: 42
  • I'm not fat, I'm big boned!
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #4 : 19.09.2008 20:16:06 »
"Я идиот - убейте меня кто нибудь" (ц)
Всенепременно ;-)

Цитировать
Спасибо. Пойду sed'ить Make файлы.
Хотел написать, что полезнее было бы потратить это время на чтение info make про Implicit rules, но увидел что оно умеет только LDFLAGS, но не LIBADD.  Лучше, наверно, читать info automake.
Я использую Сизиф и я бородат.

Оффлайн Damir

  • alt linux team
  • ***
  • Сообщений: 134
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #5 : 21.09.2008 11:01:07 »
Цитировать
Хотел написать, что полезнее было бы потратить это время на чтение info make про Implicit rules, но увидел что оно умеет только LDFLAGS, но не LIBADD.  Лучше, наверно, читать info automake.

Алексей, ну право слово, незачем ТАК позориться.

make умеет и LDFLAGS, и LDLIBS.
Ceterum censeo LORum esse delendam

Оффлайн raorn

  • alt linux team
  • ***
  • Сообщений: 42
  • I'm not fat, I'm big boned!
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #6 : 21.09.2008 12:52:34 »
Почему-то в Implicit Variables написано только про LDFLAGS.  Про LDLIBS есть только в Catalogue of Rules и с несколькими оговорками.
Я использую Сизиф и я бородат.

Оффлайн Damir

  • alt linux team
  • ***
  • Сообщений: 134
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #7 : 21.09.2008 13:34:56 »
Почему-то в Implicit Variables написано только про LDFLAGS.  Про LDLIBS есть только в Catalogue of Rules и с несколькими оговорками.
Потому что это Implicit Rules а не Variables
Ceterum censeo LORum esse delendam

Оффлайн raorn

  • alt linux team
  • ***
  • Сообщений: 42
  • I'm not fat, I'm big boned!
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #8 : 21.09.2008 15:01:18 »
Рулесы используют вариаблесы.
Я использую Сизиф и я бородат.

Оффлайн gvy

  • alt linux team
  • ***
  • Сообщений: 1 009
    • Альт на Эльбрусе
    • Email
Re: [Desktop 4.0] gcc Не видит libm.a
« Ответ #9 : 21.09.2008 15:22:32 »
"Я идиот - убейте меня кто нибудь" (ц)
Тю, зачем?  Меня вот лично в этом ass-needed анноит то, что в 1987 или 1989 году линкер TopSpeed уже это всё делал сам -- и хлам не тащил, и всё нужное без специального указания именно в нужном порядке человеком подтягивал.

К сожалению, покормить машину из ложечки в данном случае обычно всё-таки стоит мороки -- см. ссылки на обсуждение, идущие с вышеупомянутой странички AsNeeded.
--
Michael Shigorin | ALT Linux Team | ANNA-News | Сделано у нас | altlinux.org/эльбрус