所用ctorrent项目编译遇到的几个问题

2024-03-27 13:58

本文主要是介绍所用ctorrent项目编译遇到的几个问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

遇到问题error: openssl/md5.h: No such file or directory
openssl/md5.h找不到,就安装openssl,仍找不到。

出现:error: openssl/md5.h: No such file or directory
原因是openssl-devel没有安装,执行:

yum install libssl-dev 就可以了


collect2: ld returned 1 exit status错误解决


g++  -g -O2   -o ctorrent  bencode.o bitfield.o btconfig.o btcontent.o btfiles.o btrequest.o btstream.o bufio.o compat.o connect_nonb.o console.o ctcs.o ctorrent.o downloader.o httpencode.o iplist.o peer.o peerlist.o rate.o setnonblock.o sigint.o tracker.o sha1.o  -lrt 
btcontent.o: In function `checkMd5(char*, char*)':
/home/fangy/Desktop/ctorrent-dnh3.3.2/btcontent.cpp:86: undefined reference to `MD5_Init'
/home/fangy/Desktop/ctorrent-dnh3.3.2/btcontent.cpp:89: undefined reference to `MD5_Update'
/home/fangy/Desktop/ctorrent-dnh3.3.2/btcontent.cpp:92: undefined reference to `MD5_Final'
collect2: ld returned 1 exit status
make[1]: *** [ctorrent] Error 1




错误原因为:包含md5函数的库为/usr/lib/libcrypto.a(.so),编译时使用-lcrypto 


vi Makefile找到如下项目LIBS添加 -lcrypto
LIBS = -lcrypto 






借鉴如下内容,没有发现什么


今天在Linux环境下编一个c程序,无论怎么编译都是无法通过,总是出现错误:
(.text+0xb4): undefined reference to `sqrt'
collect2: ld returned 1 exit status
(Undefined reference to 错误:这类错误是在连接过程中出现的,可能有两种原因∶一是使用者自己定义的函数或者全局变量所在源代码文件,没有被编译、连接,或者干脆还没有定义,这需要使用者根据实际情况修改源程序,给出全局变量或者函数的定义体;二是未定义的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有给定相应的函数库的名称,或者是该档案库的目录名称有问题.)
使用 man sqrt命令后如下:
SQRT(3)                    Linux Programmer's Manual                   SQRT(3)


NAME
       sqrt, sqrtf, sqrtl - square root function


SYNOPSIS
       #include <math.h>


       double sqrt(double x);
       float sqrtf(float x);
       long double sqrtl(long double x);


       Link with -lm.


   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):


       sqrtf(), sqrtl():
           _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 ||
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
           or cc -std=c99
(注:粉色标记)
即链接需要加入-lm
因此:gcc  -lm test.c
解决问题。

这篇关于所用ctorrent项目编译遇到的几个问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852345

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py