使用当前平台的 gcc 编译内核头文件
[arm@localhost tchain3.4.4]#cd ${KERNEL} [arm@localhost kernel]#tar xvfz linux2.6.14.1.tar.gz [arm@localhost kernel]#cd linux2.6.14.1
[arm@localhost linux2.6.14.1]#make ARCH=arm menuconfig [arm@localhost linux2.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/asmi386 ${SYSROOT}/usr/include/asm [root@localhost
kernel]#cp a include/asmgeneric ${SYSROOT}/usr/include/asmgeneric
[root@localhost kernel]#exit
[arm@localhost
kernel]#
译编
glibc 头文件
[arm@localhost
kernel]#cd ${SRC}
[arm@localhost
chain3.4.4]#tar xvfz glibc2.3.5.tar.gz [arm@localhost chain3.4.4]#patch d
glibc2.3.5 p1 < ioperm.c.diff [arm@localhost glibc2.3.5]#cd glibc2.3.5
[arm@localhost
glibc2.3.5]#tar xvfz ../glibclinuxthreads2.3.5.tar.gz [arm@localhost
chain3.4.4]#cd ..
[arm@localhost
chain3.4.4]#mkdir BUILD/glibc2.3.5headers [arm@localhost chain3.4.4]#cd
BUILD/glibc2.3.5headers
[arm@localhost
glibc2.3.5headers]#../../glibc2.3.5/configure prefix=/usr host=${TARGET}
\
enableaddons=linuxthreads
–withheaders=${SYSROOT}/usr/include [arm@localhost glibc2.3.5headers]#su
root
[root@localhost
glibc2.3.5headers]#make crosscompiling=yes install_root=${SYSROOT}
installheaders [root@localhost glibc2.3.5headers]#touch
${SYSROOT}/usr/include/gnu/stubs.h
[root@localhost
glibc2.3.5headers]#touch ${SYSROOT}/usr/include/bits/stdio_lim.h
[root@localhost glibc2.3.5headers]#exit
[arm@localhost
glibc2.3.5headers]#
注意: prefix=/usr :是 gcc 寻找库的搜索路径。
编译
gcc 第一阶段
[arm@localhost
glibc2.3.5headers]#cd ${SRC} [arm@localhost chain3.4.4]#tar xjvf
gcc3.4.4.tar.bz2 [arm@localhost chain3.4.4]#patch d gcc3.4.4 p1 <
flow.c.diff [arm@localhost chain3.4.4]#patch d gcc3.4.4 p1 < tlinux.diff
[arm@localhost chain3.4.4]#mkdir p BUILD/gcc3.4.4stage1 [arm@localhost
chain3.4.4]#cd BUILD/gcc3.4.4stage1
[arm@localhost
gcc3.4.4stage1]#../../gcc3.4.4/configure prefix=${PREFIX}
target=${TARGET} \
enablelanguages=c
withsysroot=${SYSROOT}
注意:不能加上"disableshared"选项。 [arm@localhost
gcc3.4.4stage1]#make allgcc [arm@localhost gcc3.4.4stage1]#su root
[root@localhost gcc3.4.4stage1]#make installgcc [root@localhost
gcc3.4.4stage1]#exit [arm@localhost gcc3.4.4stage1]#
编译完整的
glibc
[arm@localhost
gcc3.4.4stage1] #cd ${SRC} [arm@localhost tchain3.4.4]#mkdir
BUILD/glibc2.3.5 [arm@localhost tchain3.4.4]#cd BUILD/glibc2.3.5
[arm@localhost glibc2.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 \
../../glibc2.3.5/configure
prefix=/usr build=i386redhatlinux host=armunknownlinuxgnu \
target=armunknownlinuxgnu
without thread
enableaddons=linuxthreads \
withheaders=${SYSROOT}/usr/include
说明:
prefix: 指定安装路径。
target: 指定目标平台。
host: 指定当前平台。
build: 指定编译平台。
withsysroot: 用于指定编译所需要的头文件,及链接库。
enableaddons: 加入其它的库,如线程库等。
enablelanguages: 指定 gcc 所支持的语言。
[arm@localhost
glibc2.3.5]#make [arm@localhost glibc2.3.5]#su root
[root@localhost
glibc2.3.5]#make install_root=${SYSROOT} install [root@localhost
glibc2.3.5]#exit
[arm@localhost
glibc2.3.5]#
编译完整的 gcc
[arm@localhost
glibc2.3.5]#cd ${SRC} [arm@localhost tchain3.4.4]#mkdir BUILD/gcc3.4.4
[arm@localhost tchain3.4.4]#cd BUILD/gcc3.4.4
[arm@localhost
gcc3.4.4]#../../gcc3.4.4/configure prefix=${PREFIX} target=${TARGET} \
enablelanguages=c
withsysroot=${SYSROOT} [arm@localhost gcc3.4.4]#make
[arm@localhost
gcc3.4.4]#su root [root@localhost gcc3.4.4]#make install [root@localhost
gcc3.4.4]#exit [arm@localhost gcc3.4.4]#
使用当前平台的 gcc 编译内核头文件的更多相关文章
- gcc编译时头文件和库文件搜索路径
特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始( ...
- linux gcc 编译时头文件和库文件搜索路径
一.头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INC ...
- Kali-linux准备内核头文件
内核头文件是Linux内核的源代码.有时候,用户需要编译内核头文件代码,为以后使用内核头文件做准备,本节将介绍编译内核头文件的详细步骤. 准备内核头文件的具体操作步骤如下所示. (1)更新软件包列表. ...
- 如何指定GCC的默认头文件路径
如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631============ ...
- linux 内核头文件 linux kernel header
概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关.那么,什么是内核头文件,为什么需 ...
- Linux内核头文件与内核与库的关系
看上一篇文章中对buildroot的介绍,里面的文档第 3.1.1.1 Internal toolchain backend 节内容 C库会去访问Linux kernel headers(*.h)文件 ...
- centos8 安装vmware需要的内核头文件 kernel-headers.
centos8 安装vmware需要的内核头文件 kernel-headers. uname -r (查看内核版本) rpm -qa kernel-headers (查看kernel-headers版 ...
- gcc和arm-linux-gcc 头文件寻找路径【转】
原文地址:http://blog.chinaunix.net/uid-29145190-id-3867605.html 在LINUX程序设计当中,经常会遇到头文件包含的问题,那么这些头文件到底在哪个路 ...
- linux下gcc默认搜索头文件及库文件的路径
一.头文件gcc 在编译时如何去寻找所需要的头文件:※所以header file的搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC ...
随机推荐
- 在vue中获取微信支付code及code被占用问题的解决?
这个地方坑比较多,查看网上并没有详细的文档,新手一般写到这里很痛苦.这里我只介绍一下我解决的方案,虽然它不是最好的,但是可行的方案: 总体分两步 1)跳到微信支付链接,它会自动拼接上code 2)获取 ...
- Linux 进程间通信 信号(signal)
1. 概念: 1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式 2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件. 3)如果 ...
- Mongodb安装遇到的问题
今天我第一次接触MongoDB,在安装过程中,因为对这个东西不了解,报错了我也不知道是哪里的错,还在网上查了半天资料,后来我懂了,感觉上午就是在浪费时间,是我没睡醒,没睡醒.. 在安装上MongoDB ...
- 随笔记录 shell脚本相关内容 2019-8-26
字符串截取: 假设变量为var=http://www.hao.com/123.htm1. # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,# 号是运算符, ...
- 如何清除Windows共享登录的用户名密码
打开cmd 1.[查看已记录的登录信息] net use 2.[清除记录] 得关掉你所有打开的samba之后再 net use * /del
- 前端之script标签注意事项
在一对script 标签中一旦有错误,其后续的代码都不会执行 一对script标签有问题,不会影响其他script标签代码的执行 当一对script标签的作用是引入外部的js文件的时候,就不要在其内部 ...
- HashMap是不是有序的?
不是有序的. 有没有有顺序的Map实现类? 有TreeMap和LinkedHashMap. TreeMap和LinkedHashMap是如何保证它的顺序的? LinkedHashMap 是根据元素增加 ...
- nodejs route的简单使用
demo var express=require('express'); var app=express(); var routeUser=express.Router(); var routeTea ...
- Flink开发-IDEA scala开发环境搭建
现在大数据相关服务,越来越倾向于使用scala语言,scala函数式编程的优势我不多赘述.最明显的一个优点,代码简洁.看个WordCount实现对比: Java版WordCount Execution ...
- H5调用腾讯地图
获取当前定位的经纬度并在容器内显示当前位置 (安卓上的位置有点偏差) 在vue的index.html中需要引用 template <div id="container" st ...