darknet yolo make报错,缺少instance-segmenter.o的规则

news2024/12/25 9:12:01

文章目录

  • darknet yolo make报错,缺少instance-segmenter.o的规则
    • 报错原因
    • 解决办法
    • 新问题
      • 解决办法
    • 补充
      • g++编译选项
      • Makefile编译规则

darknet yolo make报错,缺少instance-segmenter.o的规则

报错原因

Makefile没有识别到对于instance-segmenter.o的编译规则,但其实instance-segmenter.cpp是存在的
darknet/examples
加粗样式

解决办法

手动编译

  1. 手动编译生成输出文件instance-segmenter.o
g++ -Iinclude/ -Isrc/ -DGPU -I/usr/local/cuda/include/ -Wall -Wno-unused-result -Wno-unknown-pragmas -fPIC -fpermissive -Ofast -DGPU -c ./examples/instance_segmenter.cpp -o obj/instance_segmenter.o

生成成功
在这里插入图片描述

  1. 修改Makefile,跳过自动化流程
    由于Makefile仍执着于自动化生成instance-segmenter.o,实际上其已经手动生成,所以修改Makefile
    在这里插入图片描述
    找到上图这一行,删除instance-segmenter.o
    继续make即可

新问题

由于删除了instance-segmenter.o,导致最终darknet生成会缺少一个依赖

报错信息

g++ -Iinclude/ -Isrc/ -DGPU -I/usr/local/cuda/include/ -Wall -Wno-unused-result -Wno-unknown-pragmas -fPIC -fpermissive -Ofast -DGPU obj/captcha.o obj/lsd.o obj/super.o obj/art.o obj/tag.o obj/cifar.o obj/go.o obj/rnn.o obj/segmenter.o obj/regressor.o obj/classifier.o obj/coco.o obj/yolo.o obj/detector.o obj/nightmare.o obj/darknet.o libdarknet.a -o darknet -lm -pthread  -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -lstdc++  libdarknet.a
/usr/bin/ld: obj/darknet.o: in function `main':
darknet.cpp:(.text.startup+0x3af): undefined reference to `run_isegmenter(int, char**)'
collect2: error: ld returned 1 exit status
make: *** [Makefile:75:darknet] 错误 1

解决办法

手动编译最后一步

g++ -Iinclude/ -Isrc/ -DGPU -I/usr/local/cuda/include/ -Wall -Wno-unused-result -Wno-unknown-pragmas -fPIC -fpermissive -Ofast -DGPU obj/captcha.o obj/lsd.o obj/super.o obj/art.o obj/tag.o obj/cifar.o obj/go.o obj/rnn.o obj/segmenter.o obj/regressor.o obj/classifier.o obj/coco.o obj/yolo.o obj/detector.o obj/nightmare.o obj/instance_segmenter.o obj/darknet.o libdarknet.a -o darknet -lm -pthread  -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -lstdc++  libdarknet.a

在这里插入图片描述
生成成功在这里插入图片描述

补充

g++编译选项

g++ 是 GNU Compiler Collection 中用于编译 C++ 代码的工具。您可以使用不同的编译选项来控制编译的行为。以下是一些常见的 g++ 编译选项:

-o <output_file>:指定输出文件的名称。
-Wall:启用常见的警告信息。
-Werror:将警告视为错误,导致编译失败。
-std=:指定所使用的 C++ 标准(例如:-std=c++11、-std=c++14、-std=c++17 等)。
-I <include_path>:添加包含文件的搜索路径。
-L <library_path>:添加库文件的搜索路径。
-l:链接特定的库。
-g:生成用于调试的调试信息。
-O:优化级别,其中 可以是 0、1、2、3 或 s。
-pthread:在编译时链接 POSIX 线程库。
-f:启用或禁用特定的编译特性,如 -finline-functions。
以下是一个示例编译命令,使用了一些常见的选项:

g++ -o my_program my_program.cpp -std=c++11 -Wall -Werror -I /path/to/include -L /path/to/libs -lmylib -g -O2 -pthread

在此命令中,my_program.cpp 是您要编译的源文件,-o my_program 指定输出文件名为 my_program,-std=c++11 指定使用 C++11 标准,-Wall -Werror 启用警告并将其视为错误,-I /path/to/include 添加包含文件搜索路径,-L /path/to/libs 添加库文件搜索路径,-lmylib 链接名为 mylib 的库,-g 生成调试信息,-O2 启用优化级别 2,-pthread 链接 POSIX 线程库。

Makefile编译规则

Makefile 是一种用于管理源代码和构建过程的文件。它描述了源代码文件之间的依赖关系以及如何编译和构建项目。一个典型的 Makefile 包含了编译规则、依赖关系以及构建命令。

# 定义编译器和编译选项
CXX = g++
CXXFLAGS = -std=c++11 -Wall

# 定义目标文件和依赖关系
TARGET = my_program
SRCS = main.cpp foo.cpp bar.cpp
OBJS = $(SRCS:.cpp=.o)

# 默认目标
all: $(TARGET)

# 生成可执行文件
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $(OBJS)

# 生成目标文件
%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

# 清理生成的文件
clean:
	rm -f $(OBJS) $(TARGET)

在这个示例中,Makefile 包含以下几个部分:

定义了编译器 CXX 和编译选项 CXXFLAGS。
定义了目标文件名 TARGET,源文件列表 SRCS,以及目标文件列表 OBJS。
all 是默认目标,它依赖于 $(TARGET)。
$(TARGET) 目标依赖于目标文件列表 $(OBJS),并且生成可执行文件。
使用模式规则生成目标文件,例如将 .cpp 文件编译成 .o 目标文件。
clean 目标用于删除生成的目标文件和可执行文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/933057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文解读:高质量物体追踪

本文介绍了HQTrack&#xff0c;一种新的高质量视频物体追踪框架。HQTrack结合了视频多目标分割器&#xff08;VMOS&#xff09;和蒙版细化器&#xff08;MR&#xff09;&#xff0c;可追踪视频初始帧中指定的物体&#xff0c;并对追踪结果进行细化&#xff0c;以获得更高的准确…

【C++】4、Preprocessor 预处理:条件编译、源文件包含、宏替换、重定义行号、错误信息、编译器预留指令

文章目录 一、概述二、格式2.1 条件编译2.2 源文件包含2.3 宏替换2.3.1 语法2.3.2 C标准内置的预定义宏 2.4 重定义行号和文件名2.5 错误信息2.6 编译器预留指令 三、应用场景 C的 Build 可分为4个步骤&#xff1a;预处理、编译、汇编、链接。 预处理就是本文要详细说的宏替换…

跳跃游戏【贪心算法】

跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。在这里插入图片…

Windows 10【压缩卷】操作报错【无法将卷压缩到超出任何不可移动的文件所在的点】的解决方法

目录 一、背景 二、原因 三、解决方法 3.1 Windows自带的碎片清理工具 3.1.1 操作步骤 3.1.2 操作结果 3.2 MyDefrag工具清理磁盘碎片 3.2.1 操作步骤 3.2.2 操作结果 3.3 Windows自带的事件查看器 3.3.1 操作步骤 3.3.2 操作结果 3.4 关闭虚拟内存并删除虚拟内存…

docker harbor私有库

目录 一.Harbor介绍 二.Harbor的特性 三.Harbor的构成 四.Harbor构建Docker私有仓库 4.2在Server主机上部署Harbor服务&#xff08;192.168.158.25&#xff09; 4.2.1 这时候这边就可以去查看192.168.158.25网页 4.3此时可真机访问serverIP 4.4通过127.0.0.1来登陆和推送镜…

一分钟学会用pygame制作棋盘背景

一分钟一个Pygame案例&#xff0c;这一集我们来学习一下如何生成一个视频中的棋盘背景效果&#xff0c;非常非常简单。 视频教程链接&#xff1a;https://www.bilibili.com/video/BV17G411d7Ah/ 当然我们这里是用来做页面的背景&#xff0c;你也可以拿来做别的效果&#xff0…

【随笔】- 程序员的40岁后健身计划

【随笔】- 40岁后程序员的健身计划 文章目录 【随笔】- 40岁后程序员的健身计划一、树立健身信心&#xff0c;制订坚持计划二、挑选让你舒适的方式三、调整速度&#xff0c;以间歇式训练为主四、刚开始锻炼&#xff0c;别求太快五、增加力量、柔韧性和平衡练习六、运动多样化七…

Nginx正向代理与反向代理及Minio反向代理实操(三)

本文是对: Nginx安装及Minio集群反向动态代理配置(二) 文的进一步完善: 多台服务器间免密登录|免密拷贝 Cenos7 搭建Minio集群部署服务器(一) Cenos7 搭建Minio集群Nginx统一访问入口|反向动态代理(二) Spring Boot 与Minio整合实现文件上传与下载(三) CentOS7的journa…

【80天学习完《深入理解计算机系统》】第十一天 3.4 跳转指令

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

清华大学龙明盛:人工智能工程化软件研发

今年以来&#xff0c;一系列通用大模型和领域大模型相继发布&#xff0c;将人工智能&#xff08;AI&#xff09;推向一个崭新的高度。AI开始得到人们开始普遍关注、并渗透至各行各业&#xff0c;引发各行各业发生巨大变化&#xff0c;软件研发行业自然也随之发生巨变。 基于对大…

6.1英寸屏幕?新款iPhone15系列在印度获得认证

据报道&#xff0c;A3904和A3090是最新的iPhone 15系列机型在印度获得监管机构BIS的认证。虽然目前BIS认证文件中没有包含相关的规格和参数信息&#xff0c;但可以确认这两款机型是iPhone 15系列中的一部分。 根据之前的报道&#xff0c;iPhone 15和iPhone 15 Pro将配备6.1英寸…

数据结构(Java实现)-java对象的比较

元素的比较 基本类型的比较 在Java中&#xff0c;基本类型的对象可以直接比较大小。 对象比较的问题 Java中引用类型的变量不能直接按照 > 或者 < 方式进行比较 默认情况下调用的就是equal方法&#xff0c;但是该方法的比较规则是&#xff1a;没有比较引用变量引用对象的…

深度学习7:生成对抗网络 – Generative Adversarial Networks | GAN

生成对抗网络 – GAN 是最近2年很热门的一种无监督算法&#xff0c;他能生成出非常逼真的照片&#xff0c;图像甚至视频。我们手机里的照片处理软件中就会使用到它。 目录 生成对抗网络 GAN 的基本原理 大白话版本 非大白话版本 第一阶段&#xff1a;固定「判别器D」&#x…

数据结构(Java实现)LinkedList与链表(下)

** ** 结论 让一个指针从链表起始位置开始遍历链表&#xff0c;同时让一个指针从判环时相遇点的位置开始绕环运行&#xff0c;两个指针都是每次均走一步&#xff0c;最终肯定会在入口点的位置相遇。 LinkedList的模拟实现 单个节点的实现 尾插 运行结果如下&#xff1a; 也…

React 使用 useRef() 获取循环中所有子组件实例

目录 背景思考实现完整代码&#xff1a;成功运行后的界面如下&#xff1a; 知识点总结uesRef() 作对象处理useImperativeHandle() 父组件操作引入子组件的内部方法最后 背景 之前项目中使用了antd pro 中的 可编辑表格 (EditableProTable)&#xff0c;在页面中表格要经过多层遍…

不用循环数组,js+html实现贪吃蛇

功能描述&#xff1a;每走10步随机改变一个方方向&#xff0c;当键盘按下方向键 w,s,a,d时&#xff0c;使用键盘方向控制蛇的移动&#xff0c;蛇头每撞到一次自身时改变屏幕颜色&#xff0c;蛇头碰到边界时从另一边回来。 实现思路&#xff1a;用个30大小的数组存放每个结点&a…

基于Java+SpringBoot+Vue前后端分离纺织品企业财务管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

nodejs+vue+JavaScript学科竞赛管理系统e41wj

本文拟采用nodejs技术和vue.js搭建系统框架&#xff0c;后台使用MySQL数据库进行信息管理&#xff0c;设计开发的学科竞赛全流程管理系统。通过调研和分析&#xff0c;系统拥有管理员、教师和学生三个角色&#xff0c;主要具备登录注册、个人信息修改、教师管理、学生管理、竞赛…

【Unity小技巧】unity2d平台制作一根三七调的鱼竿效果(附git源码)

文章目录 前言素材开始源码参考完结 前言 今天我们做一个2d鱼竿的效果&#xff0c;先看一下效果成品效果 素材 鱼竿 开始 首先创建一个2D URP项目 &#xff0c;创建一个空物体作为鱼竿&#xff0c;并创建两个子物体作为开始和结束点 配置层级如下 鱼竿和鱼线加Line Ren…

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

Form tools是一套可搭配PHP和SQL的表單開源工具&#xff0c;可讓開發者靈活運用&#xff0c;同時其有數個表單模板和應用模組供挑選&#xff0c;方便且彈性。Form tools已開發超過20年&#xff0c;為不同領域的需求者或開發者提供一個自由和開放的平台&#xff0c;使他們可建構…