1、Fix it to use EXTRA_CFLAGS. Stop
1). # make KBUILD_NOPEDANTIC=1
2). Relace all CFLAGS with EXTRA_CFLAGS in the Makefile
==================================================
将makefile中的 CFLAGS 替换成 EXTRA_CFLAGS就可以了。
原因是在2.6的内核的版本中所有的 EXTRA_ 变量只在所定义的Kbuild Makefile中起作用。
EXTRA_ 变量可以在Kbuild Makefile中所有命令中使用。
$(EXTRA_CFLAGS) 是用 $(CC) 编译C源文件时的选项。
例子:
# drivers/sound/emu10kl/Makefile
EXTRA_CFLAGS += -I$(obj)
ifdef DEBUG
EXTRA_CFLAGS += -DEMU10KL_DEBUG
endif
该变量是必须的,因为顶层Makefile拥有变量 $(CFLAGS) 并用来作为整个源代码树的编译选项。
===================================================
For the "Linux device driver III", the example of "chapter 4":
Delete the <linux/config.h>
Add the <linux/sched.h>
Ok, now change into its derectory and complile it like this:
[root@localhost scull]# make
make -C /lib/modules/2.6.24.2-2lp/build M=/root/Desktop/examples/scull LDDINC=/root/Desktop/examples/scull/../include modules
make[1]: Entering directory `/usr/src/kernels/2.6.24.2-2lp-i686'
scripts/Makefile.build:46: *** CFLAGS was changed in "/root/Desktop/examples/scull/Makefile". Fix it to use EXTRA_CFLAGS. Stop.
make[1]: *** [_module_/root/Desktop/examples/scull] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.24.2-2lp-i686'
make: *** [modules] Error 2
There are two kind of method to solve this problem:
(1)Rplace all CFLAGS with EXTRA_CFLAGS in the Makefile.
(2)Using the KBUILD_NOPEDANTIC arg
[root@localhost scull]# make KBUILD_NOPEDANTIC=1
make -C /lib/modules/2.6.24.2-2lp/build M=/root/Desktop/examples/scull LDDINC=/root/Desktop/examples/scull/../include modules
make[1]: Entering directory `/usr/src/kernels/2.6.24.2-2lp-i686'
CC [M] /root/Desktop/examples/scull/main.o
CC [M] /root/Desktop/examples/scull/pipe.o
CC [M] /root/Desktop/examples/scull/access.o
LD [M] /root/Desktop/examples/scull/scull.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/Desktop/examples/scull/scull.mod.o
LD [M] /root/Desktop/examples/scull/scull.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.24.2-2lp-i686'
2、linux/config.h: No such file or directory
make -C /lib/modules/2.6.18-1.2798a_FC6/build SUBDIRS=/home/njc/stuff/linux-labjack/driver/linux-2.6 modules
make[1]: Entering directory `/usr/src/redhat/BUILD/kernel-2.6.181.2798a_FC6'
CC [M] /home/njc/stuff/linux-labjack/driver/linux-2.6/labjack.o
/home/njc/stuff/linux-labjack/driver/linux-2.6/labjack.c:43:26: error: linux/config.h: No such file or directory
make[2]: *** [/home/njc/stuff/linux-labjack/driver/linux-2.6/labjack.o] Error 1
make[1]: *** [_module_/home/njc/stuff/linux-labjack/driver/linux-2.6] Error 2
make[1]: Leaving directory `/usr/src/redhat/BUILD/kernel-2.6.181.2798a_FC6'
make: *** [default] Error 2
#define _LINUX_CONFIG_H
#include <linux/autoconf.h>
#endif
3.dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c: In function 'scumm_open':
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:54: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:54: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c: In function 'scumm_release':
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:96: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:96: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c: In function 'scumm_read':
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:140: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:140: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c: In function 'scumm_write':
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:210: error: dereferencing pointer to incomplete type
- /home/lingd/arm2410s/ldd3/chapter4/scumm/scumm.c:210: error: dereferencing pointer to incomplete type
- printk(KERN_DEBUG "\"%s(pid %d)\" open scumm device!\n", current->comm, current->pid);
- static inline struct task_struct *get_current(void)
- {
- return current_thread_info()->task;
- }
- #define current (get_current())
编译器不知道task_struct的具体定义,因此,无法解引用current,无法获知其成员comm、pid的类型,才报“dereferencing pointer to incomplete type”
4、'struct task_struct' has no member named 'uid'
ldd源码编译出现的问题的更多相关文章
-
ffplay源码编译
ffplay是ffmpeg源码中一个自带的开源播放器组件,支持本地视频文件的播放以及在线流媒体播放,很多商业播放器都是基于ffplay定制而来的.ffplay中的代码充分利用了ffmpeg中的函数库, ...
-
ffmpeg源码编译环境搭建
ffmpeg是视频开发最常用到的开源软件,FFmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制. FFmpeg: FFmpeg ...
-
Android 5.0源码编译问题
如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是 ...
-
Android stdio Apktool源码编译
Android Apktool源码编译 标签(空格分隔): Android Apktool 源码编译 需求 习惯NetBeans调试smali需要用Apktool反编译apk,需要用-d的参数才能生成 ...
-
SSH/SSL 源码编译安装简易操作说明
环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...
-
Hadoop源码编译过程
一. 为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...
-
World Wind .NET源码编译问题处理
World Wind .NET源码编译问题处理 下载了World_Wind_1.4.0_Source源码(http://worldwindcentral.com/wiki/NASA_World_W ...
-
源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
-
Linux 安装node.js ---- 源码编译的方式
一 : 普通用户: 安装前准备环境: 1.检查Linux 版本 命令: cat /etc/redhat-release 2.检查 gcc.gcc-c++ 是否安装过 命令: rpm -q gcc rp ...
随机推荐
-
win server 2008 r2 sharepoint 域环境安装经历
环境: 物理机:win7(x64,计算机名字:wyman-pc,ip:192.168.10.102) / sql server 2008 r2(x64) /VM10 虚拟机:win svr 2008 ...
-
[转]JAVA设计模式之单例模式
原文地址:http://blog.csdn.net/jason0539/article/details/23297037 概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主 ...
-
javascript Array Methods(学习笔记)
ECMAScript 5 定义了9个新的数组方法,分别为: 1.forEach(); 2.map(); 3.filter(); 4.every(); 5.some(); 6.reduce() ...
-
token验证-微信公众平台开发3(asp.net)
童鞋们直接看代码吧:(我这里是ashx处理程序写的类,开发过网站的一般都知道) <%@ WebHandler Language="C#" class="weixin ...
-
python抓取百度热词
#baidu_hotword.py #get baidu hotword in news.baidu.com import urllib2 import os import re def getHtm ...
-
UVA 10298 Power Strings 字符串的幂(KMP,最小循环节)
题意: 定义a为一个字符串,a*a表示两个字符相连,即 an+1=a*an ,也就是出现循环了.给定一个字符串,若将其表示成an,问n最大为多少? 思路: 如果完全不循环,顶多就是类似于abc1这样, ...
-
如何查看windows操作系统当前使用的字符集
如何查看windows操作系统当前使用的字符集 Chcp 显示活动控制台代码页数量,或更改该控制台的活动控制台代码页.如果在没有参数的情况下使用,则 chcp 显示活动控制台代码页的数量. 语法 ch ...
-
用Python做2048游戏 网易云课堂配套实验课。通过GUI来体验编程的乐趣。
第1节 认识wxpython 第2节 画几个形状 第3节 再做个计算器 第4节 最后实现个2048游戏 实验1-认识wxpython 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiy ...
-
js如何获取隐藏的元素的高度
首先,正常情况下,确保div是有高度的. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
-
[P2119]魔法阵 (模拟?搜索?)
很玄学 我暴力都没做出来 #include <cstdio> ],vis[],a[],b[],c[],d[]; int main() { //freopen("magic.in& ...