Что вызывает сбой этой ссылки (неопределенная ссылка)? - PullRequest
2 голосов
/ 09 сентября 2011

Я только что переключил свою машину разработчика с Gentoo на Arch Linux и, когда я пытаюсь скомпилировать свежую сборку моего проекта, соединение не удается:

clang -O0 -g -pipe -Wall -DDEBUG -o slug announce.o bitfield.o main.o metadata.o network.o parser.o peer.o piece.o scheduler.o torrent.o url.o util.o -I. -lssl -lm -lcurl -levent
/usr/bin/ld.gold: metadata.o: in function get_info_hash:metadata.c:186: error: undefined reference to 'SHA1_Init'
/usr/bin/ld.gold: metadata.o: in function get_info_hash:metadata.c:187: error: undefined reference to 'SHA1_Update'
/usr/bin/ld.gold: metadata.o: in function get_info_hash:metadata.c:188: error: undefined reference to 'SHA1_Final'
/usr/bin/ld.gold: piece.o: in function verify_piece:piece.c:40: error: undefined reference to 'SHA1_Init'
/usr/bin/ld.gold: piece.o: in function verify_piece:piece.c:41: error: undefined reference to 'SHA1_Update'
/usr/bin/ld.gold: piece.o: in function verify_piece:piece.c:42: error: undefined reference to 'SHA1_Final'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [slug] Error 1

Весь исходный код находится на GitHub: https://github.com/robertseaton/slug.

Ответы [ 2 ]

8 голосов
/ 09 сентября 2011

Похоже, вы пропали без вести -lcrypto

5 голосов
/ 02 марта 2012

Исходя из моего опыта, источником проблемы может быть расположение -lssl или -lcrypto.Попробуйте вставить параметр -lcrypto в конец параметров gcc или перед входными объектными файлами.

...