[arm@localhost tchain3.4.4]#cd ${KERNEL} [arm@localhost kernel]#tar xvfz linux­2.6.14.1.tar.gz [arm@localhost kernel]#cd linux­2.6.14.1

[arm@localhost linux­2.6.14.1]#make ARCH=arm menuconfig [arm@localhost linux­2.6.14.1]#make

复制内核头文件

[arm@localhost kernel]#su root

[root@localhost kernel]#mkdir ­p ${SYSROOT}/usr/include

[root@localhost
kernel]#cp ­a include/linux ${SYSROOT}/usr/include/linux [root@localhost
kernel]#cp ­a include/asm­i386 ${SYSROOT}/usr/include/asm [root@localhost
kernel]#cp ­a include/asm­generic ${SYSROOT}/usr/include/asm­generic
[root@localhost kernel]#exit

[arm@localhost
kernel]#

译编
glibc 头文件

[arm@localhost
kernel]#cd ${SRC}

[arm@localhost
chain3.4.4]#tar xvfz glibc­2.3.5.tar.gz [arm@localhost chain3.4.4]#patch ­d
glibc­2.3.5 ­p1 < ioperm.c.diff [arm@localhost glibc­2.3.5]#cd glibc­2.3.5

[arm@localhost
glibc­2.3.5]#tar xvfz ../glibc­linuxthreads­2.3.5.tar.gz [arm@localhost
chain3.4.4]#cd ..

[arm@localhost
chain3.4.4]#mkdir BUILD/glibc­2.3.5­headers [arm@localhost chain3.4.4]#cd
BUILD/glibc­2.3.5­headers

[arm@localhost
glibc­2.3.5­headers]#../../glibc­2.3.5/configure ­­prefix=/usr ­­host=${TARGET}
\

­­enable­add­ons=linuxthreads
–with­headers=${SYSROOT}/usr/include [arm@localhost glibc­2.3.5­headers]#su
root

[root@localhost
glibc­2.3.5­headers]#make cross­compiling=yes install_root=${SYSROOT}
install­headers [root@localhost glibc­2.3.5­headers]#touch
${SYSROOT}/usr/include/gnu/stubs.h

[root@localhost
glibc­2.3.5­headers]#touch ${SYSROOT}/usr/include/bits/stdio_lim.h
[root@localhost glibc­2.3.5­headers]#exit

[arm@localhost
glibc­2.3.5­headers]#

注意: ­­prefix=/usr :是 gcc 寻找库的搜索路径。

编译
gcc 第一阶段

[arm@localhost
glibc­2.3.5­headers]#cd ${SRC} [arm@localhost chain3.4.4]#tar xjvf
gcc­3.4.4.tar.bz2 [arm@localhost chain3.4.4]#patch ­d gcc­3.4.4 ­p1 <
flow.c.diff [arm@localhost chain3.4.4]#patch ­d gcc­3.4.4 ­p1 < t­linux.diff
[arm@localhost chain3.4.4]#mkdir ­p BUILD/gcc­3.4.4­stage1 [arm@localhost
chain3.4.4]#cd BUILD/gcc­3.4.4­stage1

[arm@localhost
gcc­3.4.4­stage1]#../../gcc­3.4.4/configure ­­prefix=${PREFIX}
­­target=${TARGET} \

­­enable­languages=c
­­with­sysroot=${SYSROOT}

注意:不能加上"­­disable­shared"选项。 [arm@localhost
gcc­3.4.4­stage1]#make all­gcc [arm@localhost gcc­3.4.4­stage1]#su root
[root@localhost gcc­3.4.4­stage1]#make install­gcc [root@localhost
gcc­3.4.4­stage1]#exit [arm@localhost gcc­3.4.4­stage1]#

编译完整的
glibc

[arm@localhost
gcc­3.4.4­stage1] #cd ${SRC} [arm@localhost tchain3.4.4]#mkdir
BUILD/glibc­2.3.5 [arm@localhost tchain3.4.4]#cd BUILD/glibc­2.3.5

[arm@localhost glibc­2.3.5]#BUILD_CC=gcc CC=${CROSS_COMPILE}gcc
AR=${CROSS_COMPILE}ar \ RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as
LD=${CROSS_COMPILE}ld \

../../glibc­2.3.5/configure
­­prefix=/usr ­­build=i386­redhat­linux ­­host=arm­unknown­linux­gnu \

­­target=arm­unknown­linux­gnu
­­without­    thread
­­enable­add­ons=linuxthreads \

­­with­headers=${SYSROOT}/usr/include

说明:

­­prefix:                            指定安装路径。

­­target:           指定目标平台。

­­host:                               指定当前平台。

­­build:                              指定编译平台。

­­with­sysroot:                 用于指定编译所需要的头文件,及链接库。

­­enable­add­ons:           加入其它的库,如线程库等。

­­enable­languages:       指定 gcc 所支持的语言。

[arm@localhost
glibc­2.3.5]#make [arm@localhost glibc­2.3.5]#su root

[root@localhost
glibc­2.3.5]#make install_root=${SYSROOT} install [root@localhost
glibc­2.3.5]#exit

[arm@localhost
glibc­2.3.5]#

编译完整的 gcc

[arm@localhost
glibc­2.3.5]#cd ${SRC} [arm@localhost tchain3.4.4]#mkdir BUILD/gcc­3.4.4
[arm@localhost tchain3.4.4]#cd BUILD/gcc­3.4.4

[arm@localhost
gcc­3.4.4]#../../gcc­3.4.4/configure ­­prefix=${PREFIX} ­­target=${TARGET} \

­­enable­languages=c
­­with­sysroot=${SYSROOT} [arm@localhost gcc­3.4.4]#make

[arm@localhost
gcc­3.4.4]#su root [root@localhost gcc­3.4.4]#make install [root@localhost
gcc­3.4.4]#exit [arm@localhost gcc­3.4.4]#

使用当前平台的 gcc 编译内核头文件的更多相关文章

  1. gcc编译时头文件和库文件搜索路径

    特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始( ...

  2. linux gcc 编译时头文件和库文件搜索路径

    一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...

  3. Kali-linux准备内核头文件

    内核头文件是Linux内核的源代码.有时候,用户需要编译内核头文件代码,为以后使用内核头文件做准备,本节将介绍编译内核头文件的详细步骤. 准备内核头文件的具体操作步骤如下所示. (1)更新软件包列表. ...

  4. 如何指定GCC的默认头文件路径

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631============ ...

  5. linux 内核头文件 linux kernel header

    概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关.那么,什么是内核头文件,为什么需 ...

  6. Linux内核头文件与内核与库的关系

    看上一篇文章中对buildroot的介绍,里面的文档第 3.1.1.1 Internal toolchain backend 节内容 C库会去访问Linux kernel headers(*.h)文件 ...

  7. centos8 安装vmware需要的内核头文件 kernel-headers.

    centos8 安装vmware需要的内核头文件 kernel-headers. uname -r (查看内核版本) rpm -qa kernel-headers (查看kernel-headers版 ...

  8. gcc和arm-linux-gcc 头文件寻找路径【转】

    原文地址:http://blog.chinaunix.net/uid-29145190-id-3867605.html 在LINUX程序设计当中,经常会遇到头文件包含的问题,那么这些头文件到底在哪个路 ...

  9. linux下gcc默认搜索头文件及库文件的路径

    一.头文件gcc 在编译时如何去寻找所需要的头文件:※所以header file的搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC ...

随机推荐

  1. 分析由Python编写的大型项目(Volatility和Cuckoo)

    之前使用python都是用来做一些简单的脚本,本质上和bat批处理文件没有区别. 但是Python是可以用来编写大型的项目的,比如: Volatility:https://code.google.co ...

  2. 拾遗:Git 与 Svn hook 不执行问题

    要点: GIT 或 SVN 的 hook 执行之前,会将所有环境变量清空,因此在其中执行命令时,必须指定绝对路径或重新设置必要的环境变量,如:$HOME 等 修改为正确的名称,如:post-commi ...

  3. 专题:NFSv4 file server

    Network File System (NFS) is a file system protocol that allows client machines to access network at ...

  4. 剑指offer——54数组中的逆序对

    题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%1000 ...

  5. 20140724 菜单制作:制表位(段落->制表位->)

    1.菜单制作:制表位(段落->制表位->) 叶轩楠·········· 上海大学 轩楠叶·········· 上海大学 楠轩叶·········· 上海大学 选完后要选“设置” 2.光盘制 ...

  6. Python的一些列表方法

    1.append:方法append用于将一个对象附加到列表末尾,直接修改列表 lst=[1,2,3,4] lst.append(5) print(lst) 1,2,3,4,5 2.clear:方法cl ...

  7. java-day20

    注解:说明程序的,给计算机看的 注释:用文字描述程序的,给程序员看的 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性.与类.接口.枚举是在 ...

  8. 如何用json 与jsonp 的区别去回答你的面试官?

    常常 有面试官这样问我们,虽然用过无数次,但是回答不上岂不是尴尬,那我们浅析一下它们的区别? 1. json JSON是一种基于文本的数据交换格式,用于描述复杂的数据,举个例子: var nax=[ ...

  9. 2018-2-13-win10-edge扩展

    title author date CreateTime categories win10 edge扩展 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...

  10. 标准 IO fgets与fputs 对文件的操作

    char *fgets(char *s, int size, FILE *stream); int fputs(const char *s, FILE *stream);   使用fgets从流中读取 ...