【问题标题】:What causes this link failure (undefined reference)?是什么导致此链接失败(未定义的引用)?
【发布时间】:2011-09-09 17:47:26
【问题描述】:

我刚刚将我的开发机器从 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

【问题讨论】:

    标签: c linux linker ld


    【解决方案1】:

    看起来你缺少 -lcrypto

    【讨论】:

      【解决方案2】:

      根据我的经验,-lssl-lcrypto 的位置可能是问题的根源。尝试将-lcrypto 选项推到 gcc 选项的末尾,或在输入目标文件之前。

      【讨论】:

        猜你喜欢
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 2014-05-29
        相关资源
        最近更新 更多