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

系统调用小实验_新手求助

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

    本文导语:  本来想实践一下系统调用实验,结果在gcc test.c时出现如下错误: /tmp/ccGMqetM.o(.text+0x35): In function 'main': : undefined reference to 'mysyscall' collect2: ld returned 1 exit status  请高手指点一下: (问题出在第5步以后) 平台: VMWAR...

本来想实践一下系统调用实验,结果在gcc test.c时出现如下错误:
/tmp/ccGMqetM.o(.text+0x35): In function 'main':
: undefined reference to 'mysyscall'
collect2: ld returned 1 exit status
 请高手指点一下: (问题出在第5步以后)

平台:
VMWARE+redhat 9.0 (kernel 2.4.20-8 )

实验目的:
      新建一个简单的系统调用函数mysyscall(),  (没啥功能,就为了体验这个过程)

实验步骤如下:
(1) 添加系统调用号
      在/include/asm-i386/unistd.h 和  /usr/include/asm/unistd.h 文件中添加如下内容:

....
#define __NR_mysyscall      259

(2)在系统调用表添加相应表项

/arch/i386/kernel/entry.S中,系统调用表后面一行处添加:
...
.long SYMBOL_NAME(sys_mysyscall)

(3) 实现系统调用服务例程

把sys_mysyscall 如下添加在 /kernel/sys.c 中
asmlinkage long sys_mysyscall(void)
{
     current->uid=0;
}

(4) 重新编译内核

(5) 编写用户态程序

#include
//_syscall0(long,mysyscall)
int main()
{
      printf("This is my uid: %d n",getuid());
      //mysyscall();
      syscall(__NR_mysyscall);
      printf("Now, my uid is changed: %d n",getuid());
}


到这里,gcc test.c
就出现最开始说的问题了!  
如果用//注释行的方法,则是下面的错误:
/tmp/......(.text+0x1c):In function 'mysyscall':
: undefined reference to 'errno'
collect2: ld returned 1 exit status
请高手帮忙解答一下是什么意思,  还有到底是哪里没对?

|
main函数中的
syscall(__NR_mysyscall); 
这个是干嘛的?

参考这里:

http://topic.csdn.net/u/20081027/22/BD1AD356-6886-4468-8103-A5CFBC6BF6DF.html

|
#define __NR_mysyscall      259 
把这个259改小点试试。

    
 
 

您可能感兴趣的文章:

  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • 请问linux中的系统调用号是如何跟系统调用表对应起来的
  • Linux添加系统调用时如何调用C语言库函数
  • 问:系统调用的原理,一个C函数的系统调用是怎样进入到系统的?
  • 截获系统调用的模块中,如何获得发生系统调用eip
  • linux中为什么系统调用比普通函数调用更费时间?
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • MINIX3 系统如何添加系统调用
  • 关于minix文件系统中dup的系统调用问题
  • 在LINUX中使用C调用系统命令,怎么取得系统命令的输出?
  • 在linux kernel 里添加了系统调用,如何在用户程序中调用添加的系统调用呢?急
  • 系统调用对应的内核函数在什么地方
  • 增加系统调用
  • 急急 solaris 系统被自己的进程调用太多堵死了,其它系统进程也运行不了,有没有什么好的办法啊?在线等!!!!
  • 望指点:系统调用与函数库关系
  • 如何用系统调用实现每秒钟显示一次系统时钟,可以用getitimer,setitimer,alarm?
  • 我自己写了一个一个程序,文件名叫test。。怎么能够像调用系统命令那样子去调用我这个命令呢。在任何地方输入test就能执行这个程序。
  • settimeofday系统调用只是修改了系统时间?!没写进硬件?重启后时间还是1970怎么办??感谢路过的大神指点
  • 关于Linux系统调用的问题!
  • C库函数和linux系统调用区别
  • 新手问:我在windows系统中下载了tomcat,请问如何拷到linux系统下安装呀
  • 请问 可以在unix系统下安装输入法吗 那里提供下载 如何安装 请详细讲 我是新手
  • 请问IBM x366能安装aix系统吗,还有请推荐一款新手学习的小型机
  • 我是新手,请问在哪里更改系统时间?谢谢
  • 新手求教双系统开机启动问题
  • 新手求救(我得系统怎么没有/etc/inetd.conf这个文件?)
  • 新手问关于大型企业环境下,LINUX系统一般安装哪个版本?
  • 新手问题:Linux下如何获取进程占用的系统资源
  • 新手提问-系统备份与安装
  • 新手请教:请问如何将以前Windows平台下的c++工程改造到linux系统平台下
  • 新手提问:父进程结束时子进程会得到什么样的从系统发来的信号?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • 实验室数据管理分析系统 LabKey Server
  • 全文检索实验系统 zettair
  • 实验室信息系统 OpenLIS
  • 求《操作系统原理》(第2版), 庞丽萍, 华中理工大学出版的配套实验书原代码!!!
  • linux文件系统实验设计的两个问题。谢谢。
  • 操作系统进程实验有误,提示undefined reference to 'locking',寻求帮助
  • 高分求解释一道操作系统的实验题,想的我蛋疼啊,求解释
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 问一个系统配置的问题:win2k系统能不能于SCO UNIX系统共存?
  • win7/Windows7系统下载地址搜集整理
  • unix下用java.util.Date取系统时间比直接在系统下用date命令查看系统时间早整整一个小时
  • Ubuntu查看系统信息命令介绍
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 我现在想做一个权限管理系统,想让权限系统的利用性更强,我应该怎样设计权限系统呢.
  • 怎样重装win7系统?win7重装系统步骤详细图文介绍
  • 谁知道哪里有用java开发的管理信息系统软件(如:图书馆管理系统,人事部管理系统)的代码?
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 原来已安装好ubuntu,因系统崩溃,重装WINXP系统,如何再次登录ubuntu系统?
  • Ubuntu系统安装及升级命令
  • Linux(Oracle系统在上面)系统无缘无故死机 , 可能是由于应用程序引起 , 可是由于重新启动查不到相关信息 , 不知道在哪里有记录系统CPU Lo
  • 安装运行微软win7/Windows7系统要求及官方下载地址
  • UNIX系统下,进程写文件,写了很大量的文件,但是进程被KILL -9杀掉,系统可以保证写缓冲上的文件写到系统吗?
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • LINUX系统怎么记录飞鱼星VE982G系统日志
  • Linux内存文件系统(ramdisk)的三种实现方式
  • 谁知道哪里有用java开发的管理信息系统软件(如:图书馆管理系统,人事部管理系统)的代码? iis7站长之家
  • linux内存文件系统ramfs实现原理
  • 我的系统硬盘有一个block坏了,系统不能正常启动,请问如何能启动设备?


  • 站内导航:


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

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

    浙ICP备11055608号-3