使用外部 toolchain 编译 openwrt
默认编译 openwrt 时会先编译一套 toolchain. 这个步骤耗时较长. 使用外部 toolchain 可以多个 project 共用一套 toolchain , 而且也不重再编译它了. 省时省力.
make menuconfig
[*] Advanced configuration options (for developers) --->
[*] Use external toolchain --->
│ │ --- Use external toolchain │ │
│ │ [ ] Use host's toolchain │ │
│ │ (mipsel-openwrt-linux-uclibc) Target name │ │
│ │ (mipsel-openwrt-linux-uclibc-) Toolchain prefix │ │
│ │ (/opt/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2) Toolchain root │ │
│ │ (uclibc) Toolchain libc │ │
│ │ (./usr/bin ./bin) Toolchain program path │ │
│ │ (./usr/include ./include) Toolchain include path │ │
│ │ (./usr/lib ./lib) Toolchain library path
编译完在 .config 下可以见到以下变量的定义:
CONFIG_EXTERNAL_TOOLCHAIN=y
# CONFIG_NATIVE_TOOLCHAIN is not set
CONFIG_TARGET_NAME="mipsel-openwrt-linux-uclibc"
CONFIG_TOOLCHAIN_PREFIX="mipsel-openwrt-linux-uclibc-"
CONFIG_TOOLCHAIN_ROOT="/opt/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2"
CONFIG_TOOLCHAIN_LIBC="uclibc"
CONFIG_TOOLCHAIN_BIN_PATH="./usr/bin ./bin"
CONFIG_TOOLCHAIN_INC_PATH="./usr/include ./include"
CONFIG_TOOLCHAIN_LIB_PATH="./usr/lib ./lib"
这些变量在 rules.mk 里起作用.
我使用主 trunk 的 openwrt, 编译 kenrel 时碰到了问题. 在 kernel 的 Makefile 里设置 KBUILD_VERBOSE = 1 看到是交叉编译器没有指定路径. 跟踪到是 rules.mk 里 TARGET_CROSS 只保留了交叉编译器前缀, 没加路径. 改了一下就可以完全编译过了.
diff --git a/rules.mk b/rules.mk
index 0822979..70f3afc 100644
--- a/rules.mk
+++ b/rules.mk
@@ -144,9 +144,9 @@ ifndef DUMP
TARGET_PATH:=$(TOOLCHAIN_DIR)/bin:$(TARGET_PATH)
else
ifeq ($(CONFIG_NATIVE_TOOLCHAIN),)
- TARGET_CROSS:=$(call qstrip,$(CONFIG_TOOLCHAIN_PREFIX))
TOOLCHAIN_ROOT_DIR:=$(call qstrip,$(CONFIG_TOOLCHAIN_ROOT))
TOOLCHAIN_BIN_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_BIN_PATH)))
+ TARGET_CROSS:=$(call qstrip,$(TOOLCHAIN_ROOT_DIR)/bin/$(CONFIG_TOOLCHAIN_PREFIX))
TOOLCHAIN_INC_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_INC_PATH)))
TOOLCHAIN_LIB_DIRS:=$(patsubst ./%,$(TOOLCHAIN_ROOT_DIR)/%,$(call qstrip,$(CONFIG_TOOLCHAIN_LIB_PATH)))
ifneq ($(TOOLCHAIN_BIN_DIRS),)
使用外部 toolchain 编译 openwrt的更多相关文章
- 使用 Docker 编译 OpenWRT(Widora)
Docker 是一种新的被称之为容器的虚拟机.本文将使用此工具,进行 OpenWRT 的编译. 在 Docker 中下载 Ubuntu 14.04 的镜像 使用以下命令可以十分方便的从远程服务器上将 ...
- 转:小白编译openwrt固件教程
原文地址 编译openwrt固件并没有想象的那么复杂,我也是个小白,以下内容是我将网络上的编译教程稍微进行了一下整合.因为我发现很多编译教程没有说明如何更改flash相关配置. 安装ubuntu, ...
- Ubuntu12.10编译openwrt遇到的错误
由于Openwrt有很多工具是要先编译的,在Ubuntu12.10平台下编译openwrt时就遇到了下面这样的错误:elf.cpp: In static member function 'static ...
- 在 Arch 下编译 OpenWRT cmcurl 问题与解决方案
0 现象 在 Arch 下编译 OpenWRT (15.05) cmcurl 时报错: [ 28%] Linking C executable LIBCURL lib/libcmcurl.a(open ...
- centos6.8下搭建编译openwrt的环境
1. 安装必要软件 su root yum install zlib-devel zlib-static -y 2. 编译openwrt 请参考这里
- Android 引入外部模块编译选择
/********************************************************************************* * Android 引入外部模块编 ...
- (七)ubuntu下编译openwrt内核的环境配置
首先安装基本开发环境: sudo apt-get install ssh vim samba tftp nfs 安装编译openwrt须要的包: 解压openwrt包编译出错: Build depen ...
- debian下编译openwrt固件
参考文章:Ubuntu下编译OpenWRT固件 我买的路由器是RG100A-AA,采用了bcm63xx系列的芯片. 下载openwrt源码: svn co svn://svn.openwrt.org/ ...
- ubuntu12编译openwrt
搭建编译环境 Ubuntu x64 12.04下的命令: sudo apt-get install subversion sudo apt-get install git sudo apt-get i ...
随机推荐
- 【编程工具】Sublime Text3的安装和常用插件推荐
本人刚刚学习 HTML,曾经上网找过一些编写 HTML 的软件,但感觉都不太好,经过三挑四选下,最终我决定选择 Sublime Text3 这款软件来作为学习工具,上网找到了许多实用的插件,在这里给大 ...
- HDU-4849 Wow! Such City!,最短路!
Wow! Such City! 题意:题面很难理解,幸亏给出了提示,敲了一发板子过了.给出x数组y数组和z数组的求法,并给出x.y的前几项,然后直接利用所给条件构造出z数组再构造出C数组即可,C ...
- ASP.NET项目使用MYSQL数据库部署到IIS服务器找不到请求的.Net Framework Data Provider解决方案
使用MySQL开发过程中在自己的机器上跑项目是没有问题的,但在实际部署到服务器上的时候就发生“找不到请求的.Net Framework Data Provider解决方案”错误,在排除项目本身原因之后 ...
- BZOJ 3309 DZY Loves Math ——莫比乌斯反演
枚举$d=gcd(i,j)$ 然后大力反演 ——来自Popoqqq的博客. 然后大力讨论后面的函数的意义即可. http://blog.csdn.net/popoqqq/article/details ...
- [POJ1664] 放苹果 (动态规划,组合数学)
题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 输入输出格式 输入格式: 第一行是测试数据的数目t(0 <= ...
- ajax同步导致ajax上面的代码不执行?
js代码:环境:IE11要求:点击一个按钮后,页面xxx的地方立即显示"开始处理...",直到ajax处理结束后,xxx内容才更新为新的处理结果:点击事件执行代码如下:xxx.in ...
- 乘法运算(codevs 3254)
题目描述 Description 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入描述 Input Description 输入只有一行,是两个用空格隔开的 ...
- iOS7坐标上移44pt的解决
在iOS7中,引入一个新的属性,叫[UIViewController setEdgesForExtendedLayout:],它的默认值是UIRectEdgeAll.当容器为UINavigationC ...
- PAT (Advanced Level) 1086. Tree Traversals Again (25)
入栈顺序为先序遍历,出栈顺序为中序遍历. #include<cstdio> #include<cstring> #include<cmath> #include&l ...
- .net core webapi jwt 更为清爽的认证 ,续期很简单
我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下 jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于中间件,我的处理方式是将获取token放到api的一个具体的co ...