当前位置:  技术问答>linux和unix

今天用C++写Linux驱动,结果失败而归,大家帮我分析一下错误提示

    来源: 互联网  发布时间:2016-07-09

    本文导语:  [root@localhost root]# cd /home/lys/Hello [root@localhost Hello]#  g++ -c -I /usr/src/linux-2.4/include/ hello.cpp In file included from /usr/src/linux-2.4/include/linux/module.h:12,                  from hello.cpp:11: /usr/src/linux-2.4/include/linux/l...

[root@localhost root]# cd /home/lys/Hello
[root@localhost Hello]#  g++ -c -I /usr/src/linux-2.4/include/ hello.cpp
In file included from /usr/src/linux-2.4/include/linux/module.h:12,
                 from hello.cpp:11:
/usr/src/linux-2.4/include/linux/list.h: In function `void
   list_del(list_head*)':
/usr/src/linux-2.4/include/linux/list.h:94: invalid conversion from `void*' to
   `list_head*'
/usr/src/linux-2.4/include/linux/list.h:95: invalid conversion from `void*' to
   `list_head*'
In file included from /usr/src/linux-2.4/include/linux/fs.h:12,
                 from /usr/src/linux-2.4/include/linux/capability.h:17,
                 from /usr/src/linux-2.4/include/linux/binfmts.h:4,
                 from /usr/src/linux-2.4/include/linux/sched.h:10,
                 from /usr/src/linux-2.4/include/linux/mm.h:22,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/wait.h: In function `void
   init_waitqueue_head(wait_queue_head_t*)':
/usr/src/linux-2.4/include/linux/wait.h:165: parse error before `}' token
/usr/src/linux-2.4/include/linux/wait.h:165: excess elements in aggregate
   initializer
In file included from /usr/src/linux-2.4/include/asm/semaphore.h:39,
                 from /usr/src/linux-2.4/include/linux/fs.h:200,
                 from /usr/src/linux-2.4/include/linux/capability.h:17,
                 from /usr/src/linux-2.4/include/linux/binfmts.h:4,
                 from /usr/src/linux-2.4/include/linux/sched.h:10,
                 from /usr/src/linux-2.4/include/linux/mm.h:22,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/asm/system.h: At global scope:
/usr/src/linux-2.4/include/asm/system.h:240: parse error before `new'
/usr/src/linux-2.4/include/asm/system.h: In function `long unsigned int
   __cmpxchg(...)':
/usr/src/linux-2.4/include/asm/system.h:243: `size' undeclared (first use this
   function)
/usr/src/linux-2.4/include/asm/system.h:243: (Each undeclared identifier is
   reported only once for each function it appears in.)
/usr/src/linux-2.4/include/asm/system.h:247: parse error before `)' token
/usr/src/linux-2.4/include/asm/system.h:253: parse error before `)' token
/usr/src/linux-2.4/include/asm/system.h:259: parse error before `)' token
/usr/src/linux-2.4/include/asm/system.h:263: `old' undeclared (first use this
   function)
In file included from /usr/src/linux-2.4/include/linux/capability.h:17,
                 from /usr/src/linux-2.4/include/linux/binfmts.h:4,
                 from /usr/src/linux-2.4/include/linux/sched.h:10,
                 from /usr/src/linux-2.4/include/linux/mm.h:22,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/fs.h: At global scope:
/usr/src/linux-2.4/include/linux/fs.h:655: parse error before string constant
In file included from /usr/src/linux-2.4/include/linux/sched.h:10,
                 from /usr/src/linux-2.4/include/linux/mm.h:22,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/binfmts.h:63: parse error before `new'
In file included from /usr/src/linux-2.4/include/linux/sched.h:28,
                 from /usr/src/linux-2.4/include/linux/mm.h:22,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/signal.h: In function `void
   sigfillset(sigset_t*)':
/usr/src/linux-2.4/include/linux/signal.h:163: warning: assignment of negative
   value `-1' to `long unsigned int'
/usr/src/linux-2.4/include/linux/signal.h:163: warning: argument of negative
   value `-1' to `long unsigned int'
/usr/src/linux-2.4/include/linux/signal.h:164: warning: assignment of negative
   value `-1' to `long unsigned int'
/usr/src/linux-2.4/include/linux/signal.h:164: warning: argument of negative
   value `-1' to `long unsigned int'
/usr/src/linux-2.4/include/linux/signal.h: In function `void
   siginitsetinv(sigset_t*, long unsigned int)':
/usr/src/linux-2.4/include/linux/signal.h:207: warning: assignment of negative
   value `-1' to `long unsigned int'
/usr/src/linux-2.4/include/linux/signal.h:207: warning: argument of negative
   value `-1' to `long unsigned int'
In file included from /usr/src/linux-2.4/include/linux/mm.h:22,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/sched.h: At global scope:
/usr/src/linux-2.4/include/linux/sched.h:212: parse error before `;' token
/usr/src/linux-2.4/include/linux/sched.h:493: parse error before `*' token
In file included from /usr/src/linux-2.4/include/linux/mm.h:31,
                 from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/swap.h:106: conflicting types for `struct
   zone_t'
/usr/src/linux-2.4/include/linux/mmzone.h:116: previous declaration as `typedef
   struct zone_struct zone_t'
In file included from /usr/src/linux-2.4/include/linux/slab.h:14,
                 from hello.cpp:15:
/usr/src/linux-2.4/include/linux/mm.h:205: parse error before `virtual'
/usr/src/linux-2.4/include/linux/mm.h: In function `long unsigned int
   do_mmap(file*, long unsigned int, long unsigned int, long unsigned int, long
   unsigned int, long unsigned int)':
/usr/src/linux-2.4/include/linux/mm.h:648: warning: initialization of negative
   value `-22' to `long unsigned int'
/usr/src/linux-2.4/include/linux/mm.h:648: warning: argument of negative value
   `-22' to `long unsigned int'
In file included from hello.cpp:17:
myheap.h: In function `void* _alloc_pool(unsigned int)':
myheap.h:21: `nNumofBytes' undeclared (first use this function)
myheap.h: At global scope:
myheap.h:24: syntax error before `operator'
myheap.h:29: syntax error before `operator'
[root@localhost Hello]#

我在myheap.h中加了new和delete运算符定义

|
1 不能用C++写内核驱动
2 内核驱动也不是这样编译的
3 看ldd3

|

把函數用extern "C" 包起來試試看吧。C++的編譯器和C的編譯器差別相當大,這樣玩恐怕你的代碼移植性會很差

而且C++的特定是依賴于很多的庫,這些庫是構建在OS之上的,內核級別的module執行的時候,這些庫還不存在

呢。你所謂的用C++來寫驅動,也只是用C++的那部分面向過程的C feature罷了,并不是真正意義上的C++。個人

覺得你這樣的做法屬於給自己找麻煩,費力不討好,呵呵

|


“因为我习惯...所以我就...”这样的惯性很不好,并且很容易使自己走进死胡同。
现在你碰到的现象就是对上述说法的举例。

|
其实一般编译器或者链接程序都是支持C和C++的,不过驱动不支持C++而已

楼主想在驱动中使用伪C的方法是行不通的

|
楼主牛人,建议还是用gcC编译驱动,不要钻牛角

|
up 一下~~~

用C++写啊~~~

真牛~~~

|
...

|
其实楼主可以用JAVA或.Net试试写Linux驱动,楼主是牛人,牛人就表示用什么语言无所谓,关键是思想,我相信楼主会成功的,加油!!!!

|
不知道你这是什么驱动.字符块设备驱动吗?居然还有重载...晕死.
你拿设备驱动那本书来看看先

    
 
 

您可能感兴趣的文章:

  • Linux c++虚函数(virtual function)简单用法示例代码
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • 用虚拟机装完LINUX为什么总会出现如图那的提示? iis7站长之家
  • linux的帮助文件在什么地方啊,我想看看关于c++的帮助文件。另外从哪里能搞到c++的类库说明阿
  • unix/Linux下c++ boost thread库读写锁介绍
  • 装好了ubuntu怎样学习c++,linux下C++学习的环境软件是什么?
  • Linux c++库boost unordered_map数据插入及查找代码举例
  • stlport c++库如何移植到arm-linux平台替代gnu c++标准库
  • Linux c++ boost库正则表达式用法
  • 求教linux C++学习之路!
  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • C++在linux下是闲得蛋疼?
  • Linux 下c++开发error while loading shared libraries问题解决
  • Linux下怎样编译C++程序?
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • 关于Linux下C++开发的问题
  • linux菜鸟请教:C++的学习
  • linux下的C++编译器怎样使用?
  • Linux C++ 网络库 Muduo
  • 请问,在Linux和Unix下,有没有像Borland C++ 3.1 for DOS或Visual C++ 6.0这样的开发工具?
  • C++在linux下意味者什么
  • 安装LINUX系统时创建分区失败 请指教
  • Linux的DNS正向成功,反向解析失败,望指教!
  • linux启动失败了,求救。
  • linux dabian系统 ssh连接失败
  • Linux上SERVER 和vc上CLIENT的通信connect失败!
  • 高手求救,在windows下访问linux服务器时使用如\192.168.100.1,但是访问失败,问在linux上要怎么设置啊
  • linux启动时auditd启动失败怎么办?
  • linux下cvs链接失败问题
  • Linux系统下,启动HTTP服务为什么老是失败啊?
  • Linux 9.0+865G,只能上到640×480,Intel官方站点的最新驱动安装失败,那位有驱动?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux 的命令操作和 windows的命令提示行有什么不同呢?? 为什么windows一般都不用命令提示行操作呢??
  • Linux安装完成后,提示重启,但是一直卡在这个提示下
  • 请教我先前装了Windows Server 2003,再装Ret Hat Linux 9,开机时,会提示选择操作系统,现在我重装Window Serever 2003,开机不会提示选择
  • Linux Shell提示符出错,并发出警报声
  • 用虚拟机装完LINUX为什么总会出现如图那的提示?
  • 如何在linux中显示中文提示?
  • linux怎么发出提示音
  • vmware linux as5 安装vmtools 时提示找不到/usr/src/linux c heads
  • 怎么彻底删除GRUB啊?我是双系统WIN2000+LINUX,格了LINUX盘后,重启提示GRUB>
  • 电脑安装linux提示 8254出现异常
  • linux 安装weblogic时提示权限不够
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • 怎么启动的时候没有提示从linux启动?
  • 怎样使linux的提示象DOS一样的路径。
  • 在装蓝点Linux时提示需要ext2分区,请问如何分区。用何工具?
  • Redhat Linux8.0软件卸载问题(已安装,卸载时提示没安装)
  • Linux 中用java语言写串口程序,提示找不到串口
  • 在linux下怎么进入命令提示符?
  • vim写程序如何自动提示标准C库函数原型及linux系统调用的原型?
  • 最近win2000启动时总提示检查linux所在分区,让它检查就会狂删linux文件,为何?在线!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3