LinuxForum.Fans
Тема

Компиляция тузлы.

Автор: tatylka 14 сообщений 1210 просмотров
28.01.2015 16:46 · отредактировано #411802

Помогите люди добрые ,подскажите что делать ,не могу скомпилировать тузлу ,выдаёт ошибку :
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

28.01.2015 16:57 #411805

gcc setup.c -lcrypt -o setup

28.01.2015 18:23 #411822

У вас не установлен пакет (или установлен, но не той версии), предоставляющий -lcrypt. Вероятно, это apr и apr-utils.
Если код программы открыт, можно ссылочку? Сходу не нагуглилось.

28.01.2015 19:41 · отредактировано #411838

tatylka, дистрибутив?

да, скорее всего речь об OpenSSL.

28.01.2015 20:05 · отредактировано #411843

drBatty ,ну вот :

text
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$
28.01.2015 20:51 · отредактировано #411855

tatylka, хвост вывода ничего не говорит, ошибка была выше по тексту, но вы его благополучно проглотили. И да, пользуйтесь тегами BBCode и paste-сервисами, это удобно.
P.S. OpenSSL собирать не надо, воспользуйтесь дистрибутивным готовым пакетом.

28.01.2015 20:57 #411858

"tatylka" написал:
make[2]: *** [link_app.] Ошибка 1
была одна ошибка, да.
А какая?
28.01.2015 21:19 #411864

У меня собирается без вопросов. И да, openSSL тут точно ни при чем, т.к.

text
$ pkg-config --libs openssl                                             
-lssl -lcrypto  

На моей машине -lcrypt имеют три пакета: apr, apr-util, ruby.

28.01.2015 21:38 · отредактировано #411872

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]

"yars" написал:
apr

это тут как раз не при чём:

text
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.

"yars" написал:
OpenSSL собирать не надо
вот это верно.
28.01.2015 21:55 #411875

да вы чего? Какой ещё openssl? crypt() живёт в библиотеке lobcrypto. Просто используемые библиотеки надо указывать после тех, кто их использует.

28.01.2015 22:27 · отредактировано #411877
"s.xbatob" написал:
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.

text
$ 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 и прочие части, как следстивие, проблема не возникает.

28.01.2015 23:54 #411892

"s.xbatob" написал:
crypt() живёт
функция crypt(3) живёт в glibc.

библиотека libcrypto в OpenSSL
29.01.2015 00:36 #411897

Всем спс за помощь ,проблема решена ,залез 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

Войдите или зарегистрируйтесь, чтобы ответить.