免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3427 | 回复: 2

[高级应用] 关于AIX 内核扩展 添加系统调用 [复制链接]

论坛徽章:
0
发表于 2014-09-30 12:43 |显示全部楼层
IBM官网教程 http://www.ibm.com/developerwork ... y/au-kernelext.html
根据教程我们可以编写内核扩展来增加自定义的系统调用,如教程中清单5提及的 demo_syscall

而清单8中,我们可以看到,调用demo_syscall 相应的编译命令为: cc  -o invoke_syscall -bI:demo_syscall.exp invoke_syscall.c
当cc=xlc时, 这样编译可以通过
但xlc是收费的,现在我的测试机上xlc已经过期,而我一向习惯使用gcc

请问有经验的大神, 如何能够解决这个问题?

gcc 编译时的错误 ERROR: Undefined symbol:demo_syscall

关键是 编译选项 -bI:demo_syscall.exp, gcc应该用什么编译选项代替?


拜谢!

论坛徽章:
0
发表于 2014-10-01 09:40 |显示全部楼层
demo_syscall.exp是编译demo_syscall...什么东西生成出来的,估计是个空的syscall,你用xlc的时候没有这个调用的代码么?重新生成一下exp就行了,或者干脆把这个参数去掉,直接把demo_syscall.c加到待编译的源文件里。

论坛徽章:
0
发表于 2014-10-02 00:16 |显示全部楼层
把demo_syscall.c加到源文件不太合理吧?
比如我写一个内核扩展,里面有全局的变量 int n;
而demo_syscall()这个新增的系统调用是让外层应用程序去修改这个变量
如果我把demo_syscall.c加到源文件中编译,那么n就成了我外层应用程序的全局变量
这应该是两码事了.
现在只想到一个办法,用 xlc去编译一个静态库,留给gcc用,有点多此一举,但总算可以解决到问题.

回复 2# orian


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP