2015-06-26 15:51:46 u010061179 阅读数 99
  • 安卓编译与开发、Linux内核及驱动

    安卓编译与开发、Linux内核及驱动视频教程,该课程内容包括一、源码编译:1、常见的ROM种类、谷歌的ROM、第三方的ROM2、区别3、RockChip的ROM、4、编译环境配置、源码下载、编译命令;二、源码开发:源码结构分析、Launcher开发、需求分析、系统级应用;三、内核讲解:内核用途、内核结构、内核职能、内核源码编译、驱动开发;四、内核开发:1、体系架构、目录结构、中断机制、内核进程控制、2、内核库文件、例子简单分析、3、内核调度流程4、内核组件工具 嘉宾介绍:仝利,英文名Burning,CSDN博客讲师,多年主要从事于流媒体,网络通讯,p2p等技术的开发与研究。目前在创业,产品是面向企业会议室和家庭客厅的多媒体通讯盒子的开发。国内还没有相关产品,预计产品会在8月份上市。

    9278 人正在学习 去看看 CSDN讲师

1、​查看你的Linux内核版本信息 shell下敲
uname -a
查看版本信息
2、下载内核源代码,链接在www.kernel.org,靠你聪明的大脑选一个你认为OK的。
3、复制剪切到/usr/src/目录下,并且解压。
直到解压完成出现shell
4​、删除以前可能失败的配置信息(多次编译留下的),确保源代码干净
make mrproper (make clean ……
cp –vi /boot/config-‘uname -r’ .config
拷贝原有linux系统的配置文件进行初始配置,可以省略很多配置步骤**
5、挑选内核功能,多种方式
make menuconfig:最常用,建议;
make oldconfig:对于作为升级内核源代码后的功能挑选来说比较适合;
make xconfig:需Qt图形界面支持;
make gconfig:需Gtk图形界面支持;
make config​:不人性化,不建议。
make menuconfig完将出现此内核功能选择菜单
至于这些功能的选择,在此就无法一一说清了,我本人只选择了Security Option中的SMACK。那么你就配置你需要的内容,配置完成以后,保存退出。
注:我在第一次make menuconfig后出现错误,Google后原来是没有​配置ncurses图形界面配置工具,如果你也有相同遭遇,那么敲# sudo apt-get install libncurses5-dev
​6、配置完成后,制作内核,依次完成以下3条命令:
make clean:清除临时文件、make bzImage:编译内核、make modules:编译模块​
make clean,make bzImage
完成make bzImage
make modules
7、安装模块
make modules_install
8、安装内核,这一步主要对新内核做一些新文件,但由于之前的拷贝配置文件,这里这条命令就是在更新和拷贝一些配置信息。
make install
9、修改启动项​,当然要做新内核的启动工作。
sudo grub-update​​
10、大功告成​
reboot
11、查看新内核是否启动成功
u​name -r
+++++++++++++++++++++++++++++++++++++++++++++++++++++
哈哈,大功告成,3.19.1~~~~~
更新至3.19.1

2017-12-12 11:47:34 u013738338 阅读数 669
  • 安卓编译与开发、Linux内核及驱动

    安卓编译与开发、Linux内核及驱动视频教程,该课程内容包括一、源码编译:1、常见的ROM种类、谷歌的ROM、第三方的ROM2、区别3、RockChip的ROM、4、编译环境配置、源码下载、编译命令;二、源码开发:源码结构分析、Launcher开发、需求分析、系统级应用;三、内核讲解:内核用途、内核结构、内核职能、内核源码编译、驱动开发;四、内核开发:1、体系架构、目录结构、中断机制、内核进程控制、2、内核库文件、例子简单分析、3、内核调度流程4、内核组件工具 嘉宾介绍:仝利,英文名Burning,CSDN博客讲师,多年主要从事于流媒体,网络通讯,p2p等技术的开发与研究。目前在创业,产品是面向企业会议室和家庭客厅的多媒体通讯盒子的开发。国内还没有相关产品,预计产品会在8月份上市。

    9278 人正在学习 去看看 CSDN讲师

linux-3.5内核编译失败的问题

配置内核并编译

$ tar -xvf linux-3.5-20150929.tgz
$ cd linux-3.5
$ make distclean
$ cp tiny4412_android_defconfig .config
$ make menuconfig
     System Type  --->
          [ ] Support TrustZone-enabled Trusted Execution Environment
          该选项为三星公司的安全模式,此处不选择
$ make -j4

编译出错

  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  TIMEC   kernel/timeconst.h
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/home/mcy/kernel/linux-3.5/kernel/Makefile:133: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:776: recipe for target 'kernel' failed
make: *** [kernel] Error 2
make: *** 正在等待未完成的任务....
make: *** wait: 没有子进程。 停止。

解决方法

$vim kernel/timeconst.pl +373
373     if (!defined(@val))
修改为:
373     if (!(@val))

再按照以上方法进行编译就可以通过,在arch/arm/boot目录下生成zImage文件。

2009-03-16 19:40:00 linyt 阅读数 4685
  • 安卓编译与开发、Linux内核及驱动

    安卓编译与开发、Linux内核及驱动视频教程,该课程内容包括一、源码编译:1、常见的ROM种类、谷歌的ROM、第三方的ROM2、区别3、RockChip的ROM、4、编译环境配置、源码下载、编译命令;二、源码开发:源码结构分析、Launcher开发、需求分析、系统级应用;三、内核讲解:内核用途、内核结构、内核职能、内核源码编译、驱动开发;四、内核开发:1、体系架构、目录结构、中断机制、内核进程控制、2、内核库文件、例子简单分析、3、内核调度流程4、内核组件工具 嘉宾介绍:仝利,英文名Burning,CSDN博客讲师,多年主要从事于流媒体,网络通讯,p2p等技术的开发与研究。目前在创业,产品是面向企业会议室和家庭客厅的多媒体通讯盒子的开发。国内还没有相关产品,预计产品会在8月份上市。

    9278 人正在学习 去看看 CSDN讲师

 

如何编译Linux内核? 相信你会得到很多种不同的答案,而我在写此文章之前,总是获得一些编译错误的结果。

如何你总是遇到编译错误或者失败,其实很多情况下是你下载的内核版本的问题,就是在高版本GCC中编译低版本的内核,造成编译失败。如果你对编译内核一悉莫展,在网上Google到很多种编译方法,但都失败的情话。倒不如看看内核的README文档,或者在内核目录下运行make help。它将会告诉许多你所不知的秘密。

1. Linux系统编译内核的通用方法
内核代码中的README文件对编译过程有非常 详细介绍,下而介绍的方法是Linux内核通用的编译方法,它是Makefile文件已定义好的编译过程。

  1) 下载源代码(以2.6.28为例)

  wget  http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.1.tar.gz

  2) 解压,并把它放到/usr/src/目录下

   gzip -d linux-2.6.28.1.tar.gz

   tar -xvf linux-2.6.28.1.tar

  mv -rf linux-2.6.28.1 /usr/src

  3) 在/usr/src/建立一个软链接到linux-2.6.28.1目录 

  cd /usr/src

  ln -s linux-2.6.28.1 linux

  cd linux

 4) 清理源代码(如果是之前已生成一些中间文件可运行此命令,否则不必了)

   make mrproper

 5) 生成config文件

  cp /boot/config-`uname -r` ./.config

  make menuconfig

  在make menuconfig的配置界面中,先选择Load config file, 把该才拷贝的文件加载进来再进行修改,修改完成后,直接选Exit,然后在提示中选择保当前配置文件。

 6) 编译

 make

 7)  安装模块

  make modules_install

 该命令会把模块及相关文件放到目录/lib/modules/2.6.18.1/下,并不会与当前内核产生冲突,除非内核版本是一样的。

  8)安装内核

  make install

 该命令会把内核相关文件(bzImage, initrd.img,System.map .config)放到/boot/目录下,文件名均带有内核版本名,与其它版本相关区别。

 如果系统安装了LILO,它会自己把该内核的启动加进来。如果是grub程序,那要看情况而定。我在Fodera系统中,它会自动添加该启动项到/boot/grup/menu.lst文件中,而在Ubuntu中则不会,需要手动添加。添加完也,即可重启进行新内核。

2. Ubuntu内核编译方法。

      上面介如的通常方法适合于所有的Linux系统,Ubuntu也不例外。Ubuntu同样提供了编译内核的方法。而且方法非常简单,把上述第6)和7)步换成下面这一命令即可。

  make-kpkg --initrd --append-to-version <your_tag> kernel_image kernel_headers

  其中<your_tag>是你给内核名字在版本号的基础上加上你指定的字符串,如果你打算直接使用内核版本号作为内核名字,则把--append-to-version和它的参数从命令行中去掉。个人建议你不要使用该选项,因为内核名字就是uname -r的运行结果,使得有时编译新的模块程序时,uname -r 和 make kernelrelease结果不一致。

该命运行完毕后,生成两个deb包,其它一个是内核和模块的包;另一个是头文件的deb包。如果不需要,可在命令行上把kernel_header去掉。

安装内核变异常简单,只需安装一个生成的内核映象的deb包。使用如下命令:

dpkg - i  linux-image-2.6.28.1_2.6.28.1-10.00.Custom_i386.deb

安装完后,所有的事情也就完成了,连/boot/grub/menu.lst的启动菜单项都修改好了,你所要做的事情就是重启系统而已。

  使用这种方法的好处是不言而喻的:你只需要在一台Ubuntu上编译好一个较新的内核,就可以在整个实验室中升级,何乐而不为呢?

3. Fodera 内核编译方法

   很抱歉,目前还未有找到很准确的Fodera内核编译方法,后面会补上。但这里介绍的方法仍然适后Fodera系统,那就是象Ubuntu一样,把内核编译成为一个rpm包。而且非常简单,只需把上面的第6)和7)步换成下面的命令:

  make rpm-pkg

 运行完后,内核rpm包位于目录/usr/src/rpm/RPMS/i386/kernel-2.6.28.1.i386.rpm下,使用rpm -i kernel-2.6.28.1.i386.rpm 命令即可安装。

 安装rpm完成后,请检查/boot/grup/menu.lst文件是否有新内核的启动,若否请手工添加。

 

2011-07-18 09:55:43 qwyang 阅读数 314
  • 安卓编译与开发、Linux内核及驱动

    安卓编译与开发、Linux内核及驱动视频教程,该课程内容包括一、源码编译:1、常见的ROM种类、谷歌的ROM、第三方的ROM2、区别3、RockChip的ROM、4、编译环境配置、源码下载、编译命令;二、源码开发:源码结构分析、Launcher开发、需求分析、系统级应用;三、内核讲解:内核用途、内核结构、内核职能、内核源码编译、驱动开发;四、内核开发:1、体系架构、目录结构、中断机制、内核进程控制、2、内核库文件、例子简单分析、3、内核调度流程4、内核组件工具 嘉宾介绍:仝利,英文名Burning,CSDN博客讲师,多年主要从事于流媒体,网络通讯,p2p等技术的开发与研究。目前在创业,产品是面向企业会议室和家庭客厅的多媒体通讯盒子的开发。国内还没有相关产品,预计产品会在8月份上市。

    9278 人正在学习 去看看 CSDN讲师

linux内核编译安装和普通程序通过源码安装是一个样的,所以不必担心。

预备知识:

一、编译过程所需要用的的工具:

1、ncurses-devel:基于文本终端的图形互动功能动态库,缺少这个rpm包,make menuconfig 会失败。

2、mkinitrd:用于制作ramdisk的映像文件。缺少这个工具make install会失败。

3、最新内核下载在www.kernel.org中。

4、系统标准模块路径:/lib/modules/

5、/boot/文件下包含启动镜像和grub文件配置

二、编译过程:

1、解压:tar -jxvf linux-2.6.18.2.tar.bz2; cd linux-2.6.18.2

2、配置编译选项:make menuconfig

3、清楚文件:make clean

4、编译内核:make bzImage

编译到源码目录下arch/x86/boot下

5、编译驱动模块:make modules

6、安装模块:make modules_install

7、make install

2015-10-15 13:32:00 weixin_33895475 阅读数 38
  • 安卓编译与开发、Linux内核及驱动

    安卓编译与开发、Linux内核及驱动视频教程,该课程内容包括一、源码编译:1、常见的ROM种类、谷歌的ROM、第三方的ROM2、区别3、RockChip的ROM、4、编译环境配置、源码下载、编译命令;二、源码开发:源码结构分析、Launcher开发、需求分析、系统级应用;三、内核讲解:内核用途、内核结构、内核职能、内核源码编译、驱动开发;四、内核开发:1、体系架构、目录结构、中断机制、内核进程控制、2、内核库文件、例子简单分析、3、内核调度流程4、内核组件工具 嘉宾介绍:仝利,英文名Burning,CSDN博客讲师,多年主要从事于流媒体,网络通讯,p2p等技术的开发与研究。目前在创业,产品是面向企业会议室和家庭客厅的多媒体通讯盒子的开发。国内还没有相关产品,预计产品会在8月份上市。

    9278 人正在学习 去看看 CSDN讲师
/********************************************************************************
 *                     I.MX6 linux kernel编译错误处理
 * 声明:
 *     本文仅仅是对I.MX6的linux内核编译出错,记录其对应的处理方法。
 *
 *                                       2015-10-15 晴 深圳 南山平山村 曾剑锋
 *******************************************************************************/


参考文章:
    1. Android JB4.2.2_1.0.0  issue:  MFG Firmware build does not compile
        https://community.freescale.com/thread/307477
    2. honycomb-x86: build failed on ubuntu for traget-product 'vm'
        https://code.google.com/p/android-x86/issues/detail?id=487
    3. AR1021In Production
        http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en557224

一、编译错误:
      LD      init/built-in.o
      LD      .tmp_vmlinux1
    drivers/built-in.o: In function `mxc_hdmi_remove':
    clkdev.c:(.text+0x125e0): undefined reference to `switch_dev_unregister'
    clkdev.c:(.text+0x125ec): undefined reference to `switch_dev_unregister'
    drivers/built-in.o: In function `hotplug_worker':
    clkdev.c:(.text+0x1445c): undefined reference to `switch_set_state'
    clkdev.c:(.text+0x1446c): undefined reference to `switch_set_state'
    clkdev.c:(.text+0x1466c): undefined reference to `switch_set_state'
    clkdev.c:(.text+0x1467c): undefined reference to `switch_set_state'
    drivers/built-in.o: In function `mxc_hdmi_probe':
    clkdev.c:(.devinit.text+0x3c8): undefined reference to `switch_dev_register'
    clkdev.c:(.devinit.text+0x3d4): undefined reference to `switch_dev_register'
    sound/built-in.o: In function `usb_audio_disconnect':
    last.c:(.text+0x16b20): undefined reference to `switch_set_state'
    last.c:(.text+0x16b28): undefined reference to `switch_dev_unregister'
    sound/built-in.o: In function `usb_audio_probe':
    last.c:(.text+0x16f84): undefined reference to `switch_dev_register'
    last.c:(.text+0x17008): undefined reference to `switch_set_state'
    last.c:(.text+0x170e4): undefined reference to `switch_dev_register'
    sound/built-in.o: In function `hp_jack_status_check':
    last.c:(.text+0x368b0): undefined reference to `switch_set_state'
    last.c:(.text+0x36944): undefined reference to `switch_set_state'
    sound/built-in.o: In function `imx_wm8962_remove':
    last.c:(.devexit.text+0x2b8): undefined reference to `switch_dev_unregister'
    sound/built-in.o: In function `imx_wm8962_probe':
    last.c:(.devinit.text+0x6e4): undefined reference to `switch_dev_register'
    last.c:(.devinit.text+0x718): undefined reference to `switch_set_state'
    make: *** [.tmp_vmlinux1] Error 1

    解决方法:
        主要是make menuconfig打开swith这个选项,详情参考文章1。

二、编译错误:
      LD      kernel/built-in.o
      CC      drivers/gpu/drm/drm_auth.o
    In file included from include/drm/drmP.h:76:0,
                     from drivers/gpu/drm/drm_auth.c:36:
    include/drm/drm.h:48:23: fatal error: sys/types.h: No such file or directory
    compilation terminated.
    make[3]: *** [drivers/gpu/drm/drm_auth.o] Error 1
    make[2]: *** [drivers/gpu/drm] Error 2
    make[1]: *** [drivers/gpu] Error 2
    make: *** [drivers] Error 2

    解决方法:
        由于采用了Android自带的编译器,本来就不能用Android的编译器,导致出现了这个问题,所以换成Linux Qt的编译器就行了。

三、编译错误:
      CC [M]  drivers/usb/gadget/audio.o
      CC [M]  drivers/usb/gadget/ether.o
    drivers/usb/gadget/ether.c: In function 'rndis_do_config':
    drivers/usb/gadget/ether.c:249:2: error: too few arguments to function 'rndis_bind_config'
    drivers/usb/gadget/f_rndis.c:788:1: note: declared here
    drivers/usb/gadget/ether.c:250:1: warning: control reaches end of non-void function [-Wreturn-type]
    make[3]: *** [drivers/usb/gadget/ether.o] Error 1
    make[2]: *** [drivers/usb/gadget] Error 2
    make[1]: *** [drivers/usb] Error 2
    make: *** [drivers] Error 2

    解决方法:
        make menuconfig 去掉这部分驱动也许就行了。目前本人通过选择一个能够编译通过的文件系统
        Device Drivers  --->  
            [*] USB support  ---> 
                <*>   USB Gadget Support  --->
                    <*>   USB Gadget Drivers (Gadget Filesystem (EXPERIMENTAL))  --->
                        (X) Gadget Filesystem (EXPERIMENTAL)     

四、编译错误:
    Qt@aplex:~/kernel/linuxQt_kernel$ make uImage
      CHK     include/linux/version.h
      CHK     include/generated/utsrelease.h
    make[1]: `include/generated/mach-types.h' is up to date.
      CALL    scripts/checksyscalls.sh
      CHK     include/generated/compile.h
      CC      drivers/input/touchscreen/ar1020-spi.o
    drivers/input/touchscreen/ar1020-spi.c: In function 'ar1020_spi_probe':
    drivers/input/touchscreen/ar1020-spi.c:801:2: error: implicit declaration of function 'set_irq_type' [-Werror=implicit-function-declaration]
    drivers/input/touchscreen/ar1020-spi.c:802:13: warning: ignoring return value of 'request_irq', declared with attribute warn_unused_result [-Wunused-result]
    cc1: some warnings being treated as errors
    
    make[3]: *** [drivers/input/touchscreen/ar1020-spi.o] Error 1
    make[2]: *** [drivers/input/touchscreen] Error 2
    make[1]: *** [drivers/input] Error 2
    make: *** [drivers] Error 2

    解决方法:
        //set_irq_type(i, IRQ_TYPE_EDGE_RISING);  // 将中断引发类型放在request_irq()中
        if (0 >= (ret=request_irq(i, test_irq_handler_func, IRQ_TYPE_EDGE_RISING,
                        "AR1020 IRQ", priv))){
            ......
        }

 

没有更多推荐了,返回首页