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

如何编译一个包含用户级代码和内核级代码的程序

    来源: 互联网  发布时间:2016-04-02

    本文导语:  最近要编写一个用户层的函数,把它加到一个内核模块程序中。可当make的时候,错误提示找不到c库的头文件,例如不管将stdlib.h加到什么地方都提示找不到,这是怎么回事呢?另外怎么编写一个包含多个.c文件的makefi...

最近要编写一个用户层的函数,把它加到一个内核模块程序中。可当make的时候,错误提示找不到c库的头文件,例如不管将stdlib.h加到什么地方都提示找不到,这是怎么回事呢?另外怎么编写一个包含多个.c文件的makefile?这些.c文件里面又有内核代码又有用户级代码。谢谢回复!

|

用户层的程序 和  内核空间的程序 不是一回事, 最简单的例子 用户空间用printf,内核空间用printk

建议你看看Linux Device Driver 3rd的“2.3. Kernel Modules Versus Applications”这一节



如果是kernel空间的,到kernel里找个Makefile参考即可。
用户空间的Makefile的写法类似。
可以到网上搜Makefile的基本用法。

|
如果在LINUX系统下,如楼上所说:应用程序和内核需要分开编译,虽然可以用同一tools chain,但是应用程序接口一般不直接跟内核打交道的,中间会有Libc库进行了包装,你应该把Makefile什么的分开.

|
内核层的函数是通过EXPORT_SYSBOL出来的,用户层是基本的库函数。

    
 
 

您可能感兴趣的文章:

  • linux下有没有能编译出16bit代码的C语言编译器?
  • windows下如何把汇编代码和C代码编译成一个程序呢?
  • jbuilder4.0 企业版能否把代码编译成在特定平台上运行的代码
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 问:用g++编译通过的代码,为啥用gcc不可以?(附代码)
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 怎样看到java程序经过编译后的代码内容(bytecode的)或者在bytecode在JVM执行时JVM所解析的代码
  • 使用 C# 动态编译代码和执行的代码
  • 有人说用vc++写的程序,代码可以直接拿到linux下找编译器,就可以编译,是真的吗?
  • 谁能告诉我早期LINUX内核的源代码和C编译器的源代码,哪能找到!谢谢!要多少分都给!
  • linux 代码修改后编译
  • 刚下载一个内核源代码,怎样将它编译出来,然后安装运行呢?
  • 编译代码结构问题
  • 二进制安装和源代码编译安装,有什么区别?
  • 如何重新编译修改后的Linux内核源代码?
  • 如何把java代码编译成*.exe的应用程序
  • 关于《GNU Emacs Lisp编程入门》这本书里所说的“字节编译代码”是什么东东?
  • 求助 程序中添加互斥锁代码后编译怎么通不过 ?
  • 求JAVA编译器的源代码!
  • 看过《tcp/ip详解》3卷,请问下书中原代码编译问题
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • GCC3.4可以编译2.4内核吗 如何查看某版本内核是用哪个版本gcc编译的
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • [求教]内核加载模块后,这部分内容编译在内核里的吗?
  • 编译新内核后怎么进入原来内核
  • 关于如何把编译进内核的编译成模块
  • 不重新编译内核能修改内核函数吗?
  • 为什么我自己编译的内核比系统自带的内核大了10倍左右?
  • Linux 编译内核之后 没办法选择内核版本
  • 内核编译出现:没有编译规则/driver/pci/devlist.h。
  • *******是不是对内核模块编程然后再重新编译内核就可以把此模块整合到linux系统中
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:在proc程序中,若里面有模板的类型,能不能通过预编译啊,(编译时老是无法识别类型,我的头文件都已包含了)
  • 菜鸟问题: redhat linux 编译一个最简单的c程序, 其中包含了<studio.h>头文件,但在gcc编译时,提示找不到studio.h文件,请问各位大大
  • 请教:修改Linux内核时,需要调用驱动程序的函数,头文件也包含了,但是编译时候说头文件找不到!
  • 关于gcc编译的问题,如何知道其包含路径
  • 宏定义里面不能再包含条件编译语句吗?见内容
  • 编译提示,找不到coreleft函数,我包含了alloc.h啊
  • 已经包含了unistd.h,gcc编译时仍报错未定义pid_t结构体
  • 关于servlet 的编译问题,怎样设置classpth,把那些java servlet类包含到classpath?而且无法调用servlet!谢谢!
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • solaris 上面用cc编译,老是说无法包含头文件 <vector>
  • 为什么我用javac编译包含javax包的javaBean出错误.
  • 为什么只要包含了linux/timer.h后就会编译出错
  • 包含了头文件sys/socket.h等,编译链接的时候却报错,是什么问题呢
  • 包含<asm/semaphore.h>后编译通不过???
  • 如何用g++编译包含多个文件的源码
  • 关于gcc编译包含gtk+程序的问题!有图
  • 内核模块,使用全局变量current, 包含#include <linux/kernel.h>编译出错?
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 编译GCC时能不能只编译C/C++的编译器?
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 在cygwin编译驱动程序要不要交叉编译?
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译


  • 站内导航:


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

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

    浙ICP备11055608号-3