ns115 step by step
一,安装环境:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32z1 lib32ncurses5 lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc ctags cscope
二,测试编译:
1、用gedit或其它文本编辑器创建下述test.c文件
//file name: test.c
#include<stdio.h>
{
printf("Hello world\n");
return 0;
}
2、用gcc编译器编译
gcc -o test test.c
3、试运行编译好的文件,如果输出Hello Ubuntu!,说明系统可以编译c程序。
./test
三,查看编译工具版本信息:
$ gcc --version
gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
$ g++ --version
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
$ gdb --version
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
四,ubuntu14.04 64bit 安装交叉编译环境不识别
解压,设置好环境变量后,#arm-none-linux-gnueabi-gcc -v 提示找不到编译器,原因是编译器是32bit的,而装的是64bit系统。
google后说要装ia32-libs,(http://andycoder.me/fix-32bug-under-ubuntu1404/)
但却一直装不上,终端提示替代品:lib32z1 lib32ncurses5 lib32bz2-1.0
安装完这三个替代品后,就可以识别交叉编译器了。
五,编译xloader出错
/home/oee/arm-tool/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/libgcc.a(_dvmd_lnx.o): In function `__aeabi_ldiv0':
(.text+0x8): undefined reference to `raise'
make: *** [x-load] Error 1
http://www.crifan.com/uboot_cross_compile_gcc_config_arm_lib1funcs_asm_undefined_reference_to_raise/
解决办法两种:
1.去用其他对应的配置(估计是用于指定是非GUN/Linux类程序的),重新编译一个新版本的交叉编译器,然后用新的非GNU/Linux的交叉编译器,去编译此旧版本的uboot,即可正常编译
2.修改自己的uboot,加上对应的(随便写个空的)__aeabi_ldiv0或raise函数即可。
此处选用第二种,具体做法:
此处的uboot是whgs的(即配置的时候用的是make whgs_config)
所以找到对应的汇编文件,即:
board/whgs/lowlevel_init.S
在文件最后,添加上
@add empty raise() to fix (when use new EABI xscale cross compiler to) compile @error gcc/config/arm/lib1funcs.asm:1266: undefined reference to `raise' .globl raise raise: nop mov pc, lr
然后重新编译,即可。
六,编译android时报错
oee@copener:/opt/ns115_jb/android$ make clean
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied
build/core/config.mk:342: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com. Stop.
代码复制过来,权限有问题
$chmod -R 700 android/
七,JDK版本不对应
oee@copener:/opt/ns115_jb/android$ make clean
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux---generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=JOP40C
OUT_DIR=out
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: java version "1.8.0_40".
The correct version is: Java SE 1.6.
Please follow the machine setup instructions at
https://source.android.com/source/download.html
************************************************************
build/core/main.mk:: *** stop. Stop.
oee@copener:/opt/ns115_jb/android$
查找除错代码:
$ vim Makefile
发现调用的是main.mk
$ vim build/core/main.mk
# Check for the correct version of java java_version := $(shell java -version >& | | grep '^java .*[ "]1\.6[\. "$$]') ifneq ($(shell java -version >& | grep -i openjdk),) java_version := endif ifeq ($(strip $(java_version)),) $(info ************************************************************) $(info You are attempting to build with the incorrect version) $(info of java.) $(info $(space)) $(>& | ).) $(info The correct version is: Java SE 1.6.) $(info $(space)) $(info Please follow the machine setup instructions at) $(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html) $(info ************************************************************) $(error stop) endif # Check for the correct version of javac javac_version := $(shell javac -version >& | | grep '[ "]1\.6\. "$$]') ifeq ($(strip $(javac_version)),) $(info ************************************************************) $(info You are attempting to build with the incorrect version) $(info of javac.) $(info $(space)) $(>& | ).) $(info The correct version is: 1.6.) $(info $(space)) $(info Please follow the machine setup instructions at) $(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html) $(info ************************************************************) $(error stop) endif
把版本号改一下
# Check for the correct version of java java_version := $(shell java -version >& | | grep '^java .*[ "]1\.8[\. "$$]') ifneq ($(shell java -version >& | grep -i openjdk),) java_version := endif ifeq ($(strip $(java_version)),) $(info ************************************************************) $(info You are attempting to build with the incorrect version) $(info of java.) $(info $(space)) $(>& | ).) $(info The correct version is: Java SE 1.6.) $(info $(space)) $(info Please follow the machine setup instructions at) $(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html) $(info ************************************************************) $(error stop) endif # Check for the correct version of javac javac_version := $(shell javac -version >& | | grep '[ "]1\.8[\. "$$]') ifeq ($(strip $(javac_version)),) $(info ************************************************************) $(info You are attempting to build with the incorrect version) $(info of javac.) $(info $(space)) $(>& | ).) $(info The correct version is: 1.6.) $(info $(space)) $(info Please follow the machine setup instructions at) $(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html) $(info ************************************************************) $(error stop) endif
版本太新,不支持
Export includes file: frameworks/base/libs/androidfw/Android.mk -- out/host/linux-x86/obj/STATIC_LIBRARIES/libandroidfw_intermediates/export_includes make: *** Waiting for unfinished jobs.... javac: target release 1.5 conflicts with default source release 1.8 javac: target release 1.5 conflicts with default source release 1.8 javac: target release 1.5 conflicts with default source release 1.8 ERROR: build project failed
换回原来的JDK版本 1.6.0_31
八,编译android出错:
vendor/dlna/src/avahi/avahi-daemon/static-services.c::: note: expected 'char *' but argument is of type 'char const *' vendor/dlna/src/avahi/avahi-daemon/static-services.c::: warning: passing argument of 'load_file' discards 'const' qualifier from pointer target type [enabled by default] vendor/dlna/src/avahi/avahi-daemon/static-services.c::: note: expected 'char *' but argument is of type 'char const *' target thumb C: avahi-daemon <= vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c target thumb C: avahi-daemon <= vendor/dlna/src/avahi/avahi-daemon/../avahi-client/check-nss.c vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c: In function 'sd_is_socket': vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c: In function 'sd_is_socket_inet': vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c: In function 'sd_is_socket_unix': vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c: In function 'sd_notify': vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: unused parameter 'unset_environment' [-Wunused-parameter] vendor/dlna/src/avahi/avahi-daemon/sd-daemon.c::: warning: unused parameter 'state' [-Wunused-parameter] target thumb C: avahi-daemon <= vendor/dlna/src/avahi/avahi-daemon/dbus-protocol.c target thumb C: avahi-daemon <= vendor/dlna/src/avahi/avahi-daemon/dbus-util.c target thumb C: avahi-daemon <= vendor/dlna/src/avahi/avahi-daemon/dbus-async-address-resolver.c vendor/dlna/src/avahi/avahi-daemon/dbus-protocol.c::: fatal error: dbus/dbus.h: No such file or directory compilation terminated. make: *** 正在等待未完成的任务.... In :: vendor/dlna/src/avahi/avahi-daemon/../avahi-common/dbus.h::: fatal error: dbus/dbus.h: No such file or directory compilation terminated. In :: vendor/dlna/src/avahi/avahi-daemon/../avahi-common/dbus.h::: fatal error: dbus/dbus.h: No such file or directory compilation terminated. make: *** wait: 没有子进程。 停止。 ERROR: build project failed oee@copener:/opt/ns115_jb/android$
提示:fatal error: dbus/dbus.h: No such file or directory
sudo apt-get install libexpat1-dev
sudo apt-get install libdbus-glib-1-dev
root@copener:/usr/include/dbus-1.0# cp -r dbus/ ../../include/dbus
apt-get install d-feet
apt-get install libgtk2.0-dev
apt-get install libdbus-glib-1-dev
root@copener:/usr/include/dbus-1.0# find / -name dbus-arch-deps.h
root@copener:/usr/include/dbus-1.0# cp -r /usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/ ../../include/
root@copener:/usr/include/dbus# cp dbus-arch-deps.h ../dbus
ns115 step by step的更多相关文章
- Step by step Dynamics CRM 2011升级到Dynamics CRM 2013
原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...
- Step by Step 创建一个新的Dynamics CRM Organization
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...
- Step by step Install a Local Report Server and Remote Report Server Database
原创地址:http://www.cnblogs.com/jfzhu/p/4012097.html 转载请注明出处 前面的文章<Step by step SQL Server 2012的安装 &g ...
- Step by step Dynamics CRM 2013安装
原创地址:http://www.cnblogs.com/jfzhu/p/4008391.html 转载请注明出处 SQL Server可以与CRM装在同一台计算机上,也可安装在不同的计算机上.演示 ...
- Step by step 活动目录中添加一个子域
原创地址:http://www.cnblogs.com/jfzhu/p/4006545.html 转载请注明出处 前面介绍过如何创建一个域,下面再介绍一下如何在该父域中添加一个子域. 活动目录中的森林 ...
- SQL Server 维护计划实现数据库备份(Step by Step)(转)
SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server ...
- 转:eclipse以及step into step over step return的区别
首先来讲一下step into step over step return的区别: step into就是单步执行,遇到子函数就进入并且继续单步执行:(F5) step over是在单步执行时,在函数 ...
- [转]Bootstrap 3.0.0 with ASP.NET Web Forms – Step by Step – Without NuGet Package
本文转自:http://www.mytecbits.com/microsoft/dot-net/bootstrap-3-0-0-with-asp-net-web-forms In my earlier ...
- EF框架step by step(7)—Code First DataAnnotations(2)
上一篇EF框架step by step(7)—Code First DataAnnotations(1)描述了实体内部的采用数据特性描述与表的关系.这一篇将用DataAnnotations描述一下实体 ...
- EF框架step by step(6)—处理实体complex属性
上一篇的中介绍过了对于EF4.1框架中,实体的简单属性的处理 这一篇介绍一下Code First方法中,实体Complex属性的处理.Complex属性是将一个对象做为另一个对象的属性.映射到数据库中 ...
随机推荐
- Qt中2D绘图问题总结(一)----------基本的绘制与填充
刚刚开始学习Qt不久,才开始渐渐地熟悉基础内容,学习过程中的一些知识的总结和感悟希望通过博客记录下来,与大家分享学习的同时,也是对自己坚持下去的鞭策,废话不多说了,开始第一次的小总结吧. Qt提供了强 ...
- hdu 1159, LCS, dynamic programming, recursive backtrack vs iterative backtrack vs incremental, C++ 分类: hdoj 2015-07-10 04:14 112人阅读 评论(0) 收藏
thanks prof. Abhiram Ranade for his vedio on Longest Common Subsequence 's back track search view in ...
- MFC listcontrol导出excel表格
// 导出ExcelCString CBackGroundDlg::ExportAsExcel(CString filename, CListCtrl &resultlist, CWnd * ...
- http://tool.oschina.net 在线API文档库java jquery ,php,很全的文档库
http://tool.oschina.net 1.6API文档(中文)的下载地址: ZIP格式:http://download.java.net/jdk/jdk-api-localizations ...
- Java特性-HashMap
想分享一个对HashMap的理解: 我们首先要知道一个HashMap对象的构成,一般的理解是:一个Map里面放了很多个键值对,合在一起就是一个键值对的数组: 大概这么理解没问题,可是有一点要说明一下, ...
- 在gridControl的单元格中的多行文本
我们知道,gridcontrol里面的单元格默认是不能换行的,但是有时候我们需要显示要换行的文本,应该怎么处理呢?这里提供一个方案: 假设我有一个列”合同文本“(colContractText),我要 ...
- Java泛型学习笔记 - (四)有界类型参数
1. 当我们希望对泛型的类型参数的类型进行限制的时候(好拗口), 我们就应该使用有界类型参数(Bounded Type Parameters). 有界类型参数使用extends关键字后面接上边界类型来 ...
- 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径1
import java.util.ArrayList; import java.util.List; // 模块E public class AdjMatrixGraph<E> { pro ...
- linux tar命令的使用
tar格式,会打包成一个文件,可以对多个目录,或者多个文件进行打包 tar命令只是打包,不会压缩,打包前后大小是一样的 tar命令 -c //打包 -x //解压 -f //指定文件 ...
- Cardinal样条曲线的Javascript实现(理论篇)
首先,要对样条曲线进行插值的原因是:希望通过给定的关键帧点生成一条希望的直线或者曲线. 1.直线插值 生成一条直线,给定直线首尾的关键点P0,P1,就能确定这条直线的特性,比如y=kx+b中的斜率k和 ...