LINUX.ORG.RU

Ответ на: комментарий от mav

Да в том-то и дело, что все библиотеки установлены и т.д. (на другой машине под RedHat 5.2) всё компилиться, а на этой хоть тресни ничего не выходит. если указать -l libcrypt.a ну или -l /usr/lib/libcrypt.a , то я получаю gcc -l /usr/lib/libcrypt.a test.c /usr/bin/ld: cannot open -l/usr/lib/libcrypt.a: No such file or directory collect2: ld returned 1 exit status Хотя все установленно и все файлы есть. (А всё началось с того, что я не смог на этой машине откомпилить пакет UUCP с возможностью криптования паролей перед проверкой. ) Может кто нибудь ещё что-то подскажет. Skav.

anonymous
()

su ldconfig -v | grep libcrypt Если ниче не даст, то либо у тебя ее нет, либо не прописал путь к ней в /etc/ld.so.conf .Обычно libcrypt.so лежит в /lib, а libcrypt.a лежит в /usr/lib . Если все таки найдет, то собирай с -L/usr/lib -lcrypt . Быть не может, что-бы не собралось.

timur
()

Oops ошибка в предыдущем посте.

su
ldconfig -v | grep libcrypt

timur
()
Ответ на: комментарий от timur

Ок. Всё понятно я прото не так писал. Если писать -lcrypt (Надо манник внимательней читать :)), то всё компилиться на ура!!!. Но я бы хотел чтобы система сама знала где брать эту функцию. Сразу оговорюсь что ldconfig -v | grep crypt выдает: libcrypt.so.1 => libcrypt-2.1.2.so libcrypt.so.1 => libcrypt-2.1.2.so т.е. ld знает о такой библиотеке, но при этом gcc test.c ругается :(((

anonymous
()

Ну тогда просто наберите ldconfig -v :) Прикажете все это по умолчанию линковать ? Должны же вы сказать ему с ЧЕМ из этого списка он должен линковку делать. И потом это список DLL-ей, который при сборке никак не используется, а используется он при runtime линковке. А при сборке компилятор ищет их в тех директориях, которые вы ему указали ( /lib и /usr/lib по умолчанию ). А еще либы бывают статические, которые к ldconfig'у не имеют вообще никакого отношения. Короче: gcc - такой, какой он есть. Если вы используете функцию из либы, значит знаете как она называется => можете указать ее имя, а если сделать систему как вы хотите, вы же первый и взвоете.

timur
()
Ответ на: комментарий от timur

Ну это всё понятно. Так как есть кажеться наиболее логичным удобным и т.д. и т.п. Тогда конкретный вопрос: Я не пойму почему на старой системе по умолчанию всё находиться, а на новой нет. Хотя всё бинарники либы и т.д. и т.п. установлены из rpm-ков входившие в стандартную поставку. Skav.

anonymous
()

?????

На "той" машине наверное старые библиотеки и crypt() в libc.so содержится
(`cc file.c -o file` по умолчанию стыкует с libc) 

yaroslav_v
()

Угу, по умолчанию gcc использует -lc -lgcc ( если не указан специальный ключ ). Значит либо на этой машине /lib/libc.so включает в себя libcrypt ( по моему в libc-5 так и было ), либо gcc юзает еще и -lcrypt ( что ОЧЕНЬ маловероятно ).

timur
()

Вот оно!!!

Вот теперь у меня всё в голове уложилось. Всем Thanx. Skav.

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