- 浏览: 1477834 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
真是每个linux的小版本编译的时候都有不同的问题啊,
最近在看《独辟蹊径品内核》《linux2.6内核标准教程》
用到linux2.6.24.编译的问题汇总到这里
环境
从
https://www.kernel.org/pub/linux/kernel/v2.6/
下的2.6.24
解压后
设置menuconfig 选debug
开始编译:
遇到问题:
错误1
参考
http://blog.sina.com.cn/s/blog_8f9cdbbd01014lxj.html
-m elf_x86_64 换成 -m64
-----------------------------------------------
错误2:
参考
http://stackoverflow.com/questions/23194840/linux-2-6-24-kernel-compilation-error-size-expression-for-copy-user-generic-c-d
-----------------------------
错误3:
kernel/mutex.c
这个好使,其他的都是扯淡,什么该config参数,什么加__used都不行,需要把static去掉,加锁和解锁的
https://github.com/socketpair/jslinux_reversed/blob/master/contrib/patches/2.6.20_common_fixes.patch
__mutex_lock_slowpath的两个方法的static去掉
__mutex_unlock_slowpath的两个方法的static去掉
-----------------------------------------
错误4:
解决:
最近在看《独辟蹊径品内核》《linux2.6内核标准教程》
用到linux2.6.24.编译的问题汇总到这里
环境
[root@centos140_11 boot]# gcc --version gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [root@centos140_11 boot]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [root@centos140_11 boot]#
从
https://www.kernel.org/pub/linux/kernel/v2.6/
下的2.6.24
解压后
设置menuconfig 选debug
make O=/home/haoning/rtclinux/websocket/web/jslinux/tmp/linux2.6.24.build/kernel/ menuconfig
开始编译:
time make O=/home/haoning/rtclinux/websocket/web/jslinux/tmp/linux2.6.24.build/kernel/ -j10
遇到问题:
错误1
参考
http://blog.sina.com.cn/s/blog_8f9cdbbd01014lxj.html
arch/x86/vdso/Makefile 19 quiet_cmd_syscall = SYSCALL $@ 20 cmd_syscall = $(CC) -m elf_x86_64 -nostdlib $(SYSCFLAGS_$(@F)) \ 21 -Wl,-T,$(filter-out FORCE,$^) -o $@
-m elf_x86_64 换成 -m64
-----------------------------------------------
错误2:
/tmp/cct0Bawg.s: Assembler messages: /tmp/cct0Bawg.s: Error: .size expression for copy_user_generic_c does not evaluate to a constant make[2]: *** [arch/x86/lib/copy_user_64.o] Error 1 make[1]: *** [arch/x86/lib] Error 2 make: *** [sub-make] Error 2
参考
http://stackoverflow.com/questions/23194840/linux-2-6-24-kernel-compilation-error-size-expression-for-copy-user-generic-c-d
arch/x86/lib/copy_user_64.S 347 END(copy_user_generic_c) 348 349 .section __ex_table,"a" 350 .quad 1b,3b 351 .quad 2b,5b 换成 347 END(copy_user_generic_c) 348 349 .section __ex_table,"a" 350 .quad 1b,3b 351 .quad 2b,5b
-----------------------------
错误3:
kernel/built-in.o: In function `mutex_lock': /home/haoning/rtclinux/websocket/web/jslinux/tmp/linux-2.6.24/kernel/mutex.c:92: undefined reference to `__mutex_lock_slowpath' kernel/built-in.o: In function `mutex_unlock': /home/haoning/rtclinux/websocket/web/jslinux/tmp/linux-2.6.24/kernel/mutex.c:118: undefined reference to `__mutex_unlock_slowpath' make[1]: *** [.tmp_vmlinux1] Error 1 make: *** [sub-make] Error 2
kernel/mutex.c
这个好使,其他的都是扯淡,什么该config参数,什么加__used都不行,需要把static去掉,加锁和解锁的
https://github.com/socketpair/jslinux_reversed/blob/master/contrib/patches/2.6.20_common_fixes.patch
__mutex_lock_slowpath的两个方法的static去掉
__mutex_unlock_slowpath的两个方法的static去掉
-----------------------------------------
错误4:
/scripts/unifdef.c:70:0: /usr/include/stdio.h:678:20: note: previous declaration of ‘getline’ was here
解决:
scripts/unifdef.c 207 static int findsym(const char *); 208 static void flushline(bool); 209 //static Linetype getline(void); 210 static Linetype mygetline(void); 211 static Linetype ifeval(const char **); 212 static void ignoreoff(void); 511 Linetype lineval; 512 513 for (;;) { 514 linenum++; 515 //lineval = getline(); 516 lineval = mygetline(); 517 trans_table[ifstate[depth]][lineval](); 518 debug("process %s -> %s depth %d", 519 linetype_name[lineval], 520 ifstate_name[ifstate[depth]], depth); 521 } 522 } 523 524 /* 525 * Parse a line and determine its type. We keep the preprocessor line 526 * parser state between calls in the global variable linestate, with 527 * help from skipcomment(). 528 */ 529 static Linetype 530 //getline(void) 531 mygetline(void) 532 { 533 const char *cp; 534 int cursym; 535 int kwlen;
发表评论
-
xl2tp 备份
2019-09-24 16:25 6932019年9月24日更新: 注意,需要开启firewall ... -
sdl笔记
2019-01-31 17:19 733sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1433参考https://bellard.org/jslinux/t ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18922019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1402### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 596###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 634《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1959参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
mobile terminal 笔记
2016-12-02 15:35 626找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
socket基础和select(python)
2016-06-14 17:21 1802上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 995不使用select 普通的基础socket连接,对多个客户端的 ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4360假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659464位操作系统centos7 ############ 1.一 ... -
socat和netcat(nc)
2016-04-29 22:36 1745转 原文链接: http://www.wenquan.name ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1621接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础八(qemu 桥接网络)
2016-02-06 13:13 1544qemu的桥接和nat的qemu启动命令是一样的,但是后续的脚 ... -
neutron基础七(qemu tap)
2016-02-02 17:02 1030使用qemu 建立个虚拟机 然后用tap设备, 根据基础六,t ... -
neutron基础六(bridge fdb)
2016-01-28 18:30 2265转发表 在三台机器上建立三个namespace 192.16 ... -
南北流量
2016-01-23 23:26 1828一、三层网络架构: 接入层:负责服务器的接入和隔离 汇聚层:汇 ...
相关推荐
在本资料中,我们有两个关键文件:`bootsplash-3.1.tar.bz2`和`bootsplash-3.1.6-2.6.24.diff.gz`,分别对应Bootsplash源码和针对Linux 2.6.24内核的补丁。 `bootsplash-3.1.tar.bz2`是一个压缩文件,包含了...
压缩包中的"Linux2.6.24内核中添加ME3760驱动.pdf"文档很可能详细描述了以上步骤,包括具体的代码示例和配置细节。阅读这份文档对于理解驱动的实现过程至关重要。 另外,"source"文件可能包含了ME3760驱动的源代码...
文档标题提到的"Linux2.6.24内核中添加ME3760驱动",说明了一个具体的开发案例,即如何将ME3760设备的驱动集成到Linux 2.6.24版本内核中。ME3760可能是一个具体的硬件设备,比如某款手机、无线网卡或其他USB设备。ME...
本篇文章将围绕"cs8900"这个特定的硬件设备,探讨其在Linux 2.6.24内核中的驱动源代码实现,以及与之相关的编译环境——gcc-3.3.6。 "cs8900"是一款广泛应用的以太网控制器,它为嵌入式系统提供了高速网络连接能力...
### 编译Linux内核的方法:详尽指南 #### 核心知识点概览: 1. **编译环境的搭建**:包括安装必要的编译工具、库文件和配置工具。 2. **内核源代码的获取**:通过Ubuntu的源安装或从`kernel.org`下载最新内核版本...
Linux内核版本2.6.24中的E Ink驱动程序是一个关键组件,它使得Linux操作系统能够与电子墨水显示屏(E-Ink Display)进行通信,这类屏幕常用于电子阅读器和一些低功耗设备上。E-Ink技术以其独特的显示效果,如高对比...
首先,我们注意到一个关于`CONFIG_BLK_DEV_INITRD`的条件编译块,这部分代码检查初始化根文件系统(initrd)是否被覆盖。initrd是一个临时的文件系统,用于在主根文件系统可用之前提供必要的驱动程序和工具。如果...
在本文中,我们将深入探讨基于内核的Linux键盘记录器,特别是针对内核版本2.6.24和x86架构的设计与实现。 1. **内核模块**: 在Linux中,键盘记录器通常作为一个内核模块实现,这是因为内核直接处理键盘设备的输入...
1. **下载内核源码及补丁**:从`ftp://ftp.arm.linux.org.uk/pub/linux/linux-2.6/`下载Linux2.6.24内核及其关于ARM平台的补丁(如`Patch-2.6.24.gz`)。 2. **打补丁**:使用命令`zcat ../patch-2.6.24.gz | patch ...
描述中提到的"linux2.6.24 S3C2410下的网卡CS8900驱动"确认了这个压缩包包含的是针对S3C2410平台的CS8900驱动代码。作者还提供了移植方法的博客链接,这通常涉及到如何将驱动程序与特定硬件平台的内核接口进行适配,...
编译Linux内核是整个移植过程中最核心的步骤之一。本案例中使用的内核版本为`2.6.24`。 ##### 编译步骤: 1. **解压内核源码** 将`urbetter_linux-2.6.24.tar.gz`拷贝至工作目录`/home/fusq/test`,并解压源码:...
在这个环境中,我们将使用特定版本的工具和库,如binutils 2.16.1,glibc 2.3.2,Linux内核2.6.24,gdb 6.5,以及GCC 4.1.1。这些工具的源代码需要从相应的GNU FTP服务器下载。 以下是构建过程的基本步骤: - 解...
### Linux2.6.24.4到S3C2410的移植知识点解析 #### 一、项目背景及目的 随着嵌入式技术的发展,Linux操作系统在嵌入式领域的应用越来越广泛。Linux内核的移植是实现特定硬件平台上运行稳定、高效Linux系统的...
接下来,从官方网站下载最新版本的内核源码,例如`linux-2.6.24.tar.gz`,将其解压到`/usr/src`目录,并创建符号链接方便管理。然后进入源码目录,执行`make mrproper`以清除旧的配置信息,为新的编译做好准备。 ...
描述中提到"2440 扫描键盘驱动,验证过,保证好用,适用2.6.24内核",意味着这个驱动已经经过了实际测试,确保在Linux 2.6.24内核上运行良好,能够有效地识别和响应S3C2440平台上物理按键的输入。在嵌入式系统中,...
cp /linux-2.6.24/arch/arm/configs/s3c2410_defconfig /linux-2.6.24/.config ``` **4. 修改NAND Flash分区信息** 编辑NAND Flash分区信息以适应具体的硬件需求。具体操作如下: - 打开`/linux-2.6.24/arch/arm/...
实验的主要目标是下载Linux 2.6.24内核源码,配置并编译出适合Super-ARM实验箱的内核镜像。以下是实验的详细过程和涉及的知识点: 首先,实验开始前需要检查交叉编译环境。在嵌入式开发中,由于目标硬件平台和开发...
### RTAI移植至Linux 2.6.24内核的技术报告 #### 引言 在控制项目中,实时Linux扩展是极其有用的工具,尤其是在通用计算机上应用时。操作系统的非确定性有时会使得在硬实时控制任务中难以管理。为解决这一问题,...
在本文中,我们将深入探讨与"ADC(模拟数字转换器)驱动"相关的技术知识,特别是针对AT9260处理器在Linux2.6.24内核环境下的实现。AT9260是一款高性能的微处理器,常用于嵌入式系统,而ADC驱动则是将模拟信号转换为...