Помогите люди добрые ,подскажите что делать ,не могу скомпилировать тузлу ,выдаёт ошибку :
tatyjlb@tatyjlb-All-Series:~$ cd ./stachel
tatyjlb@tatyjlb-All-Series:~/stachel$ make
gcc -lcrypt setup.c -o setup
/tmp/ccYQKm6N.o: In function `main':
setup.c:(.text+0xab): undefined reference to `crypt'
collect2: error: ld returned 1 exit status
make: *** [linux] Ошибка 1
Компиляция тузлы.
gcc setup.c -lcrypt -o setup
У вас не установлен пакет (или установлен, но не той версии), предоставляющий -lcrypt. Вероятно, это apr и apr-utils.
Если код программы открыт, можно ссылочку? Сходу не нагуглилось.
а название пакетов можете написать?
http://dropmefiles.com/fa4Mq
tatylka, дистрибутив?
да, скорее всего речь об OpenSSL.
drBatty ,ну вот :
make[2]: *** [link_app.] Ошибка 1
make[2]: Выход из каталога `/home/tatyjlb/openssl/apps'
make[1]: *** [openssl] Ошибка 2
make[1]: Выход из каталога `/home/tatyjlb/openssl/apps'
make: *** [build_apps] Ошибка 1
tatyjlb@tatyjlb-All-Series:~/openssl$была одна ошибка, да.make[2]: *** [link_app.] Ошибка 1
А какая?
У меня собирается без вопросов. И да, openSSL тут точно ни при чем, т.к.
$ pkg-config --libs openssl
-lssl -lcrypto
На моей машине -lcrypt имеют три пакета: apr, apr-util, ruby.
yars, да что вы говорите!
[console]$ grep 'libcrypto.so' /var/log/packages/*
/var/log/packages/openssl-1.0.1j-i486-1:20:lib/libcrypto.so.1.0.0
/var/log/packages/openssl-solibs-1.0.1j-i486-1:20:lib/libcrypto.so.1.0.0
/var/log/packages/openssl-solibs-1.0.1j-i486-1:22:lib/libcrypto.so.0.9.8
[/console]
apr
это тут как раз не при чём:
PACKAGE NAME: apr-1.5.0-i486-1
COMPRESSED PACKAGE SIZE: 232K
UNCOMPRESSED PACKAGE SIZE: 1.0M
PACKAGE LOCATION: apr-1.5.0-i486-1.txz
PACKAGE DESCRIPTION:
apr: apr (Apache Portable Runtime)
apr:
apr: The mission of the Apache Portable Runtime (APR) is to provide a
apr: free library of C data structures and routines, forming a system
apr: portability layer to as many operating systems as possible.
вот это верно.OpenSSL собирать не надо
да вы чего? Какой ещё openssl? crypt() живёт в библиотеке lobcrypto. Просто используемые библиотеки надо указывать после тех, кто их использует.
crypt() живёт в библиотеке lobcrypto
У этой библиотеки флаг линкера другой: -lcrypto.
P.S. Это вообще отсылка в glibc, пруф:
-l namespec
--library=namespec
Add the archive or object file specified by namespec to the list of files to link. This option may be used any number of times. If
namespec is of the form :filename, ld will search the library path for a file called filename, otherwise it will search the library path for
a file called libnamespec.a.
(q) man ld.
$ grep libcrypt.a /var/log/packages/*
/var/log/packages/glibc-2.17_multilib-x86_64-9alien:usr/lib/libcrypt.a
/var/log/packages/glibc-2.17_multilib-x86_64-9alien:usr/lib64/libcrypt.a
/var/log/packages/glibc-debug-2.17_multilib-x86_64-9alien:usr/lib64/debug/libcrypt.a
Что делать? Ставить libc-dev какой-нибудь, в Slackware пакеты крупные, без "нарезки" на всякие -dev и прочие части, как следстивие, проблема не возникает.
функция crypt(3) живёт в glibc.crypt() живёт
библиотека libcrypto в OpenSSL
Всем спс за помощь ,проблема решена ,залез Makefile и поправил:
${CC} ${FLAGS} setup.c -lcrypt -o setup
./setup
${CC} ${FLAGS} mserv.c blowfish.c -O6 -o mserv
Было так:
${CC} ${FLAGS} setup.c -o setup
./setup
${CC} ${FLAGS} mserv.c blowfish.c -O6 -o mserv