免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3612 | 回复: 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


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

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP