WRTnode-make V=s出错解决办法

make 编译常用命令 make 显示详细编译过程 make VERBOSE=1 或者 make V=1 常用编译命令 命令 描述 make V=0 quiet build(default) make V=1 verbose build make V=2 give reason for rebuild of target make clean 清除编译文件 make -s 编译时使用静默输出的配置 编译结果输出到文件 先对 linux 中的输出设备进行一下介绍。大家都知道,linux 系统中 阅读详情

WRTnode是基于Wi-Fi AP-Soc的开源硬件开发板。官方网址 http://wiki.wrtnode.com/index.php?title=Main_Page/zh-cn

WRTnode.jpg

对于初始学习WRTnode,尤其是之前没有学过Linux开发的人来说,总会遇到各种各样的问题,即使你是照着官方文档按流程做的。这不,按照官网的流程做个 helloworld,都遇到了困难。下面介绍一下我遇到的问题以及解决方法:

1.以下过程参考WRTnode官方教程:http://wiki.wrtnode.com/index.php?title=Openwrt_development/zh-cn

2.首先配置WRTnode的交叉编译环境OpenWrt,可以参考我的博客 http://blog.youkuaiyun.com/zhyulo/article/details/78732348

3.在package目录下创建helloworld目录,并进入helloworld目录:

$cd ~/OpenWrt/package
$mkdir helloworld
$cd helloworld

4.在helloworld目录下,创建新目录 src,并进入到src目录。在src目录下创建hellowrold.c以及编译helloworld.c所需要的Makefile文件

$mkdir src
$cd src
$touch helloworld.c
$touch Makefile

5.分别编辑helloworld.c和Makefile

注意:在命令行编辑文档时,编辑前先按下 'i';保存并退出时按下 Esc 按键,输入":wq"(输入" "中的),按回车。

$vim helloworld.c
#include <stdio.h>
#include <unistd.h>
int main(void)
{
    printf("a hellowrold ipk for openwrt !!! \n");
    return 0;
}
$vim Makefile
#build a Makefile for helloworld.c
helloworld: helloworld.o
	$(CC) $(LDFLAGS) helloworld.o -o helloworld
helloworld.o: helloworld.c
	$(CC) $(CFLAGS) -c helloworld.c
clean:
	rm *.o helloworld

6.编写Makefile,这个Makefile文件是给OpenWRT读的。是用来生成软件包的,在上一步中我们写的Makefile是为了编译helloworld.c的,两个Makefile不同,也不在同一层目录下。在上一步中我们是在src目录下,现在我们要编写的Makefile要在上层目录,既是helloworld目录下。

$cd ../
$touch Makefile
$vim Makefile
###############################################
#OpenWrt Makefile for helloworld program
##############################################
include $(TOPDIR)/rules.mk
# Name and release number of this package
PKG_NAME:=helloworld
PKG_RELEASE:=1
# This specifies the directory where we're going to build the program.
# The root build directory, $(BUILD_DIR), is by default the  build_mipsel
# directory in your OpenWrt SDK directory
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
# Specify package information for this program.
# The variables defined here should be self explanatory.
# If you are running Kamikaze, delete the DESCRIPTION
# variable below and uncomment the Kamikaze define
# directive for the description below
define Package/helloworld
	SECTION:=utils
	CATEGORY:=Utilities
	TITLE:=Helloworld -- prints a snarky message
endef
# Uncomment portion below for Kamikaze and delete DESCRIPTION variable above
define Package/helloworld/description
	If you can't figure out what this program does, you're probably
	brain-dead and need immediate medical attention.
endef
# Specify what needs to be done to prepare for building the package.
# In our case, we need to copy the source files to the build directory.
# This is NOT the default.  The default uses the PKG_SOURCE_URL and the
# PKG_SOURCE which is not defined here to download the source from the web.
# In order to just build a simple program that we have just written, it is
# much easier to do it this way.
define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
# We do not need to define Build/Configure or Build/Compile directives
# The defaults are appropriate for compiling a simple program such as   this one
# Specify where and how to install the program. Since we only have one  file,
# the helloworld executable, install it by copying it to the /bin directory on
# the router. The $(1) variable represents the root directory on the router running
# OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install
# directory if it does not already exist.  Likewise $(INSTALL_BIN) contains the
# command to copy the binary file from its current location (in our case the build
# directory) to the install directory.
define Package/helloworld/install
	$(INSTALL_DIR) $(1)/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/bin/
endef
# This line executes the necessary commands to compile our program.
# The above define directives specify all the information needed, but this
# line calls BuildPackage which in turn actually uses this information to build a package.
$(eval $(call BuildPackage,helloworld))

7.以上过程问题都不大,下面就是编译了。首先回到顶层目录,执行make进行编译。这下问题来了:

$ cd ../../
$make V=s

8.啊哈,好多"failed",好多"error"。看的人好想哭!我就是按步骤做的,怎么会出问题难过。不过问题出现了,就要解决问题。下面是出现该问题的原因:

Makefile是make命令所需要执行的文件,文件中所有的执行命令(也就是缩进的部分)之前都要加Tab,注意:这里只能是Tab,不能是空格。官网上的Makefile文件代码由于网页版制的问题,所有应该是Tab的地方,全部变成了4个空格。所以解决问题的方法也就出来了:把所有的执行命令前的空格该成Tab。再次执行下make:

$make V=s

9.还是有好多的"failed"和"error",但是上一个错误已经没有了,这说明上一个问题已经解决了。但是,又有了新的问题。我们再来想办法解决掉这个问题:

首先,查看一下最先出错的位置:/home/user/OpenWrt/staging_dir/host/bin/ccache_cc: 2: exec: ccache: not found。它说的是 ccache 这个程序没有发现,我们可以执行下这个命令再试试:

$ ccache

果然,ccache 这个程序不能执行了。

10.ccache 这个程序执行不了的解决方法:

$ sudo apt-get install ccache

11.好了,我们再执行一下 ccache 试试看:

$ ccache

好了,ccache 问题解决!

12.再次执行一次make,看看是否编译成功:

$ make V=s

helloworld 编译成功!可以在 bin/ramips/packages/base 中找到编译好的文件 helloworld_1_ramips_24kec.ipk

$ cd ~/OpenWrt/bin/ramips/packages/base
$ ls

 

ESP32S3 TLS 握手WIFI可用但是在蜂窝热点下卡死:排查方法与根因 设备卡在等。 阅读详情

相关推荐

通达信股本变迁文件(gbbq)解密方法

近年来A股市场跌宕起伏真特么精彩,本人愚钝,被整爆仓,损失惨重 痛定思痛,认为交易这种对纪律要求极高,且必须完全排除情绪影响的勾当,还是应该交给程序来干 数据哪里来呢?当然是拿来主义。。。问券商的交易软件要呗 到处查资料,得知通达信的权息文件数据齐全,不仅含有除权除息数据,还含有限售解禁、增发、可转债上市等股本变化数据 ——这对于某些对成交量变化敏感的交易模型是非常重要的

不甘碌碌老,结庐铸宝刀 2万+

OpenWrt学习(三)源码大包编译

编译大包 make V=99,V=99用来生成编译过程的详细信息,方便查找出错原因,或者用V=s。 建议加“-j x”(x 为CPU core数量)选项,编译出错后需要查看错误原因时去掉-j x选项。 编译过程会花费大量时间去下载软件源码包,下载路径为dl目录,所有有时为了节省时间会提前把源码包拷贝到dl目录下 编译完成后生成的烧写镜像文件在bin目录下,生成的ipk在bin/p...

TSZ0000的博客 3438

U8采购入库单CO接口开发实战:加载、新增与删除操作详解

本文详细解析了用友U8采购入库单CO接口的开发实战,重点介绍了加载、新增与删除三大核心操作的实现方法。通过C#代码示例和实际项目经验,帮助开发者高效处理采购入库单,提升企业供应链管理效率。文章还涵盖了环境配置、异常处理、性能优化等关键技巧,适合U8二次开发人员参考。

weixin_33462927的博客 376

OpenWRT编译 -- 静态编译驱动到内核中的方法

申明: 小弟openwrt初学,很多东西都不知道,在偶然的机会用到openwrt,想要将自己写的驱动程序编译进内核中,费了九牛二虎之力,最终还是直接在内核源码中进行增加才搞定,过程尽可能的详细,也是自己的一个学习过程,也是给自己做一个笔记后面遇到可以借鉴。 另外,第一次写博客,希望大家不喜勿喷哦,当然文档中有任何问题都欢迎能指出来,而且在过程中遇到了一个问题到现在没有找出为什么,希望大家看到了...

青椒*^_^*凤爪爪的博客 1万+

EMI硬件抑制八项工程对策:从回路面积到谐振规避

电磁干扰(EMI)是电子系统可靠性与EMC合规性的核心挑战,其本质源于高频电流回路产生的辐射与耦合效应。理解回路面积、共模/差模噪声、阻抗匹配等基础原理,是实施有效抑制的前提。技术价值体现在降低辐射发射(RE)、传导发射(CE)超标风险,提升产品一次通过率与长期稳定性。典型应用场景包括开关电源设计、高速数字接口布局、工业嵌入式设备及医疗电子等对EMC要求严苛的领域。本文聚焦可落地的硬件级对策,涵盖回路面积控制、屏蔽策略、变压器漏磁管理、双线传输与阻抗匹配等关键实践,深度融合电流回路物理模型与PCB工程实现。

weixin_35019679的博客 86

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1162

openwrt 添加自己的应用程序到内核并自启动(内核模块)

文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 本文章是关于openwrt 下的 内核模块的添加: 当我们写完了应用程序,想当成模块添加到固件中,需要再内核源码中添加/创建应用程序文件。 一、创建目录 openwrt/package/serial-spi-4g 其中serial-spi-4g 是我自己创建的文件夹 serial-spi-4g :文件夹 serial-spi-4g /src:...

板蓝根蜀黍的博客 1770

Windows 2012 SYSVOL复制失败的处理

题外话:晓原理、知架构、查日志是排错的三件法宝今天在DC1上新建并链接了一个组策略对像,在客户端刷新时,却报下面的错误:“处理组策略失败。Windows无法应用组策略对象LDAP….”如下图所示:于是在客户端用\\domain.com访问,发现\\domain.com\SYSVOL\domain.com\policies下面没有上面报错的组策略对象。这是怎么一回事呢,pin...

weixin_33989780的博客 1669

openwrt-mt7688编译与烧录

OpenWrt系统已经发布了多个版本,如下:发布时间版本号开发代号2013年4月12.09 正式版Attitude Adjustment2014年10月14.07 正式版Barrier Breaker2015年9月15.05 正式版Chaos Calmer这些版本号很长,打字费劲,黑话称之为AA、BB、CC,简洁多了。本文的openwrt是MTK官方的OPENWRT,openwrt开源组织无法下载...

严慈善的专栏 2267

从淬火实验到仿真验证:用ANSYS APDL复现钢球冷却温度变化(含动画生成教程)

本文详细介绍了如何利用ANSYS APDL进行淬火过程的瞬态热分析仿真,以复现钢球冷却温度变化。内容涵盖从实验数据校准材料参数、构建高保真模型、设置非线性瞬态求解,到提取节点温度曲线和生成温度云图动画的全流程。通过APDL命令流实现自动化,为工程研发和学术研究提供高效、可靠的仿真验证方法。

pz8901234的博客 791

11、气动外形优化中的连续伴随方法

本文探讨了连续伴随方法在气动外形优化中的理论背景、实现和验证过程。通过使用DLR的FLOWer求解器,将伴随方法应用于Euler和Navier-Stokes方程,以高效计算成本函数梯度,从而显著减少优化过程中的计算成本。文章还介绍了该方法在RAE2822翼型和ONERA M6机翼等案例中的应用,并展示了其准确性和效率。未来展望包括扩展到复杂流动模拟和多学科优化。

desk3的博客 168

编译在VMware中运行的OpenWrt固件版本

编译VMware中运行的openwrt版本时,make menuconfig以及make V=s主要操作说明及部分问题解决。

izar的博客 2163

【SOUND】Linux音频子系统ASoC的驱动框架总分析

ALSA系统在芯片(ASoC)层的总体项目目标是为嵌入式芯片处理器(例如PXA2XX,AU1X00,IMX等)和便携式音频编解码器提供更好的ALSA支持。 在进入ASoC子系统之前,内核对SoC音频有一些支持,但是它有一些局限性:ASoC层旨在解决这些问题并提供以下内容特征 :为了实现这一切,ASoC基本上将嵌入式音频系统分为多个可重复使用的组件驱动程序:另外,这里提下OSS(Open Sound System)这个基本被弃用的音频框架。 可以参考Linux OSS架构声卡驱动框架 2.3 ASoC重要

wang 恒 的博客 1783

CMake笔记:make -j$(($(nproc) + 1)) V=s 参数是什么意思

$(nproc) 就是能自动计算出你用编译机器的内核线程数,比如你在你的编译机器上输入nproc回车看下,是不是返回数字是你的机器的线程数,假设你明确知道你的CPU是8核16线程的,你完全可以直接用make -j16 V=s 。但是一般来说第一次编译还是用make -j1 V=s 稳妥些 ...

南沙的星星 6586

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Openwrt支持挂载nfs文件系统的编译

Openwrt支持挂载nfs文件系统的编译 下载下来的openwrt源码默认编译配置是不支持nfs文件系统挂载的,需要手动配置编译 原以为在内核文件系统编译选项里面,结果发现只有nfs server,选择编译了还是没法挂载nfs文件系统。 后来发现,原来编译选项在busybox里面。 #make menuconfig Base system

Learn and live 7034

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

从零搭建openwrt

1、下载资源 找到官网https://downloads.openwrt.org/ 找到想要的版本进入分页面https://archive.openwrt.org/releases/17.01.7/targets/ramips/mt7621/ 下载编译包package 一般名字是xxx-sdk-xxx.tar.xz 下载到开发服务器上或者Ubuntu虚拟机, 2、搭建编译环境 1、修改命令行格式 命令行首的随机名字太长的话先修改命令行格式,vi ~/.bashrc 大概在62行,也有的不是,

仲羊的博客 942

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OpenWRT开发之——创建软件包(有更新)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33726943的博客 529

sstp-client for openwrt编译

事实上我觉得在openwrt下所有的东西都不像看上去那么容易,本来linux下

magicdog2009的专栏 3057

Openwrt 编译出错记录

错误:staging_dir/host/bin/ccache_cxx: 2: exec: ccache: not found解决方法: apt-get install ccache

qq_31776303的博客 537

WRTnode硬件 www.wrtnode.com

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33813128的博客 238

openwrt 编译命令记录

全部编译 make -j V=s 只编译kernel make target/linux/{clean,compile} V=s

kevin.ji的专栏 1400

Mac OS X中编译WRTNode固件

1.Disk Image CreationMac OS X系统默认的磁盘文件系统是非大小写敏感的,而Openwrt编译环境需要大小写敏感支持,故我们创建一个磁盘映像文件来新建大小写敏感的文件系统. 下面开始用MacOSX系统中自带的命令hdiutil来创建一个新磁盘镜像并挂载到系统中. Hackintosh:~ Diveinedu$ cd $HOMEHackintosh:~ Diveine

戴维营教育 1605

make V=1 输出信息

make -f ./Makefile syncconfig make -f ./scripts/Makefile.build obj=scripts/basic rm -f .tmp_quiet_recordmcount make -f ./scripts/Makefile.build obj=scripts/kconfig syncconfig scripts/kconfig/conf --syncconfig Kconfig make -f ./scripts/Makefile.autoconf ||

雯辰的博客 353

make输出详细的编译过程

make V=1 输出详细的编译过程

kyliner1234的专栏 1万+

openwrt常用命令

openwrt 编译 1. 编译单个套件 make package/cups/{clean,compile,install} V=s 再make image 2. 全编 make V=s 3. 编译的时候查找错误 make V=s 2>&1 | tee build.log | grep -i '[^_-"a-z]error[^_-.a-z]' 4. clean ...

chensnowlian的专栏 2万+
上一篇: WRTnode-使用U盘
下一篇: J-link v8固件刷写详细教程
zhyulo
博客等级 码龄10年 86粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值