Linux c编译,运行遇到的问题总结
2014-07-28 19:59
573 查看
编译遇到的问题:
1. implicit declaration of function 两种原因:
1 没有把函数所在的c文件生成.o目标文件
2 在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明
drivers/mmc/sep_mci.c:830: warning: implicit declaration of function `clk_disable' --于是我在sep_mci.c的头部将 <linux/clk.h>包含进去就行了
2. warning: assignment makes pointer from integer without a cast
1. 未包含函数的头文件
2. 函数在被调用之前未作声明
3. error: multiple storage classes in declaration specifiers
把全局静态变量用成了extern (extern static int device_probe())
4. inlining failed in call to always_inline 'driver_match_device': function bod
我把incline去掉后,编译成功 (extern inline int device())
5.warning: 'struct ccw_dev_id' declared inside parameter li st [enabled by default]
缺少头文件,声明
6.ERROR: "_ioctrl_bind_pt_dev"[arch/s390/kvm/kvm.ko] undefined!
在头文件里面没有声明,所以找不到该函数的定义
7. 编译出现ISO C90 forbids mixed declarations and code 警告
因为 变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告!
将非变量的定义移到变量定义之后 即可
8 提示错误“expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token“
1.include 前忘记了加上“#”
2.某些关键字书写错误,如“void”(我糊涂地把它写成viod)
3.很常见的错误,就是makefile的命令前面用的空格而不是用[tab],正确应该是用[tab]
4.{}()不配对
9.error :expected declaration or statement at end of input
1. 某一个函数或者变量没有在使用之前声明。
2. 某个地方少了个括号。
10. warning:declared inside parameter list
缺少头文件 (说你这个参数只能在函数声明中有意义,其他范围可能不行)
11.
drivers/built-in.o(.text+0x33e24): In function `drm_lock_take':
drivers/char/drm/drm_lock.c:208: undefined reference to `cmpxchg'
drivers/built-in.o(.text+0x33ea: In function `drm_lock_transfer':
drivers/char/drm/drm_lock.c:248: undefined reference to `cmpxchg'
drivers/built-in.o(.text+0x33eec): In function `drm_lock_free':
drivers/char/drm/drm_lock.c:273: undefined reference to `cmpxchg'
drivers/built-in.o(.text+0x33f9c): In function `drm_notifier':
drivers/char/drm/drm_lock.c:310: undefined reference to `cmpxchg'
make: *** [.tmp_vmlinux1] 错误 1
答案:在Device Driver里选择了Direct Rendering Manager驱动,ARM里不支持这个驱动,去掉选项就可以了
1. implicit declaration of function 两种原因:
1 没有把函数所在的c文件生成.o目标文件
2 在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明
drivers/mmc/sep_mci.c:830: warning: implicit declaration of function `clk_disable' --于是我在sep_mci.c的头部将 <linux/clk.h>包含进去就行了
2. warning: assignment makes pointer from integer without a cast
1. 未包含函数的头文件
2. 函数在被调用之前未作声明
3. error: multiple storage classes in declaration specifiers
把全局静态变量用成了extern (extern static int device_probe())
4. inlining failed in call to always_inline 'driver_match_device': function bod
我把incline去掉后,编译成功 (extern inline int device())
5.warning: 'struct ccw_dev_id' declared inside parameter li st [enabled by default]
缺少头文件,声明
6.ERROR: "_ioctrl_bind_pt_dev"[arch/s390/kvm/kvm.ko] undefined!
在头文件里面没有声明,所以找不到该函数的定义
7. 编译出现ISO C90 forbids mixed declarations and code 警告
因为 变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告!
将非变量的定义移到变量定义之后 即可
8 提示错误“expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token“
1.include 前忘记了加上“#”
2.某些关键字书写错误,如“void”(我糊涂地把它写成viod)
3.很常见的错误,就是makefile的命令前面用的空格而不是用[tab],正确应该是用[tab]
4.{}()不配对
9.error :expected declaration or statement at end of input
1. 某一个函数或者变量没有在使用之前声明。
2. 某个地方少了个括号。
10. warning:declared inside parameter list
缺少头文件 (说你这个参数只能在函数声明中有意义,其他范围可能不行)
11.
drivers/built-in.o(.text+0x33e24): In function `drm_lock_take':
drivers/char/drm/drm_lock.c:208: undefined reference to `cmpxchg'
drivers/built-in.o(.text+0x33ea: In function `drm_lock_transfer':
drivers/char/drm/drm_lock.c:248: undefined reference to `cmpxchg'
drivers/built-in.o(.text+0x33eec): In function `drm_lock_free':
drivers/char/drm/drm_lock.c:273: undefined reference to `cmpxchg'
drivers/built-in.o(.text+0x33f9c): In function `drm_notifier':
drivers/char/drm/drm_lock.c:310: undefined reference to `cmpxchg'
make: *** [.tmp_vmlinux1] 错误 1
答案:在Device Driver里选择了Direct Rendering Manager驱动,ARM里不支持这个驱动,去掉选项就可以了
相关文章推荐
- 总结一下编译linux内核 linux-2.6.34所遇到的问题。
- 前一段时间编译xmms后运行遇到libmpg123.so权限不够,不能播放mp3的问题
- 遇到的Linux问题总结
- linux编译安装遇到问题记录
- csipsimple编译遇到的问题总结
- wxWidgets编译和遇到的问题总结
- Linux下编译MySQLdb遇到的问题
- 如何解决linux下编译环境,运行环境不同的问题
- 使用嵌入式linux完全手册光盘的arm-linux-gcc 遇到问题 自己编译
- LINUX 编译容易出错问题总结
- Linux下编译Opencv2.3.1遇到的问题
- Linux 内核编译过程常遇到的错误总结
- 在linux64位机器上编译时遇到的两个问题
- linux下php安装及连接oracle遇到问题总结
- Linux字符设备驱动-globalmem驱动编译加载遇到的问题及解决办法
- 使用linux过程中遇到的问题总结
- 在Linux下运行编译java文件时出现的问题
- 在linux4.7上安装net-snmp编译遇到的问题
- JAVA路径问题及命令行编译运行基础(linux下)
- 关于在neoshine linux下使用电视卡遇到的问题和总结