我是靠谱客的博主 直率蜡烛,最近开发中收集的这篇文章主要介绍aix内核是linux,使用GCC在AIX6.1系统上进行内核扩展,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

AIX有本土的C编译器XLC,不过这个东西不是免费的。所以我今天尝试了一下用GCC在AIX系统上做内核扩展的实验,当然过程并不是一帆风顺的,这很正常,好在最终成功实现了,期间离不开google上其他网友的分享,所以我也在这篇博文里尽可能完整地把这其中每个过程记录下来.

首先,我们需要在AIX环境下安装GCC,这个我直接从网上下rpm包,然后用rpm命令安装。gcc for aix的rpm包可以从下面的链接获得:

因为我自己经常遇到链接失效的问题,所以在此我希望你足够幸运能打开这个链接,至少今天在我这里是可以的,我下的文件是

文件下来之后,用rpm -ivh gcc-4.2.0-3.aix6.1.ppc.rpm就会把GCC安装到系统上了,这步非常简单,应该不会出错。安装好之后,运行一下gcc -v的输出如下:

bash-3.2# gcc -v

Using built-in specs.

Target: powerpc-ibm-aix6.1.0.0

Configured with: ../configure --with-as=/usr/bin/as --with-ld=/usr/bin/ld --enable-languages=c,c++,java --prefix=/opt/freeware --enable-threads --enable-version-specific-runtime-libs --host=powerpc-ibm-aix6.1.0.0 --target=powerpc-ibm-aix6.1.0.0 --build=powerpc-ibm-aix6.1.0.0 --disable-libjava-multilib

Thread model: aix

gcc version 4.2.0

有了GCC之后,接下来就是实际的做一个AIX内核扩展,源码直接来自:Writing AIX Kernel Extension

下面开始编译链接过程,这个对新手来说是最容易出错的环节:

a. 编译(但不链接):

bash-3.2# gcc -D_KERNEL -g -O2 -pipe -maix64 -ffreestanding -msoft-float -c kernext_hello.c

上面的-O2选项很重要,否则接下来的ld阶段会出现一个类似下面的错误:

bash-3.2# ld -o kernext_hello -b64 -bI:/usr/lib/kernex.exp -lsys -lcsys -e hello_init kernext_hello.o

ld: 0711-317 ERROR: Undefined symbol: .__fd_getdtablesize

ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

编译阶段成功生成了一个kernext_hello.o目标文件,用file命令看一下其格式:

bash-3.2# file kernext_hello.o

kernext_hello.o: 64-bit XCOFF executable or object module not stripped

b.链接

bash-3.2# ld -o kernext_hello -b64 -K -bI:/usr/lib/kernex.exp -lsys -lcsys -ehello_init kernext_hello.o

这步将产生一个AIX内核模块kernel_hello.

然后就可以通过下面的命令来加载卸载该模块了:

bash-3.2# ./kctrl ./kernext_hello

内核模块中消息的输出可以采用诸如:uprintf("hello world, command=0x%xn", cmd);这样的方式,虽然有bsdlog这样的函数,但是我试了很久也没有成功,倒是直接在命令行中启动syslogd才可以看到log信息,不过又出现大量message的现象,后来我索性放弃了,因为我觉得uprintf蛮好。

过程其实蛮简单的,善于利用google就可以了。再次感谢其他网友的无私奉献!

阅读(5424) | 评论(2) | 转发(0) |

最后

以上就是直率蜡烛为你收集整理的aix内核是linux,使用GCC在AIX6.1系统上进行内核扩展的全部内容,希望文章能够帮你解决aix内核是linux,使用GCC在AIX6.1系统上进行内核扩展所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部