Development environment and tools of device driver(二)

Building a Driver

这一部分介绍了怎样为多种不同的结构编译链接一个driver。

首先要在developer或更高等级上安装Solaris OS,可以看 http://docs.oracle.com/cd/E18752_01/html/821-1908/webstart-91.html#SOLARISINSTALLwebstart-91的介绍,选择Custom Install,然后选择Developer cluster or above.

在path environment 变量上,include进去/opt/SUNWspro/bin followed  by  /usr/ccs/bin.

64位的kernel不能用32位的driver,只能使用64位的driver。一个特定程序的所有部分都必须使用同样的数据模型。一个device driver 不是一个完整的程序。kernel是一个完整的程序,driver只是kernel程序的一部分。如果想要device同时可以在Solaris OS 32和64上使用,就要提供32位和64位的两种driver。 默认情况下,Solaris OS 在每一种结构上产生的是32位的结果。如果想得到64位的结果,要用这部分为描述64位结构的compliation选项。用prtconf(1M)命令-x选项来选择是否系统上的firmware已经是64位的了。


Compiling with Sun Studio

用-D_KERNEL 选项来显示这段代码(定义一个kernel module)

1. 如果你用的是 Sun Studio 9,Sun Studio 10,Sun Studio 11为64位SPARC 编译,用-xarch=v9选项:

% cc -D_KERNEL -xarch=v9 -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o
2. 如果你用的是 Sun Studio 12为64位SPARC 编译,用-m64选项:

% cc -D_KERNEL -m64 -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o
3. 如果你用的是用Sun Studio 10,Sun Studio 11为64位x86 编译,用-xarch=amd64 和 -xmodel=kernel选项:

% cc -D_KERNEL -xarch=amd64 -xmodel=kernel -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o
4.  如果你用的是 Sun Studio 12为64位x86 编译,用-m64,-xarch=sse2a 和-xmodel=kernel选项:

% cc -D_KERNEL -m64 -xarch=sse2a -xmodel=kernel -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o
5. 如果你为一个32位系统编译,用下面的build命令

% cc -D_KERNEL -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o
Note - Sun Studio 9不支持64位的x86,用Sun Studio 10,Sun Studio 11,Sun Studio 12来编译,debug driver。

For more information on compile and link options, see the Sun Studio Man Pages and theSun Studio 12: C User’s Guide. See theSun Studio Information Center in the Sun Studio 12 Collection for Sun Studio books aboutdbx, dmake, Performance Analyzer, and other software development topics. To read technical articles aboutSun Studio, seeSun Studio Technical Articles. To download Sun Studio, go tohttp://developers.sun.com/sunstudio/.


Compiling with the GNU C Complier

首先要在developer或更高等级上安装Solaris OS,可以看 http://docs.oracle.com/cd/E18752_01/html/821-1908/webstart-91.html#SOLARISINSTALLwebstart-91的介绍,选择Custom Install,然后选择Developer cluster or above.GNU C编译器安装在 /usr/sfw 上。

用-D_KERNEL 选项来显示定义一个kernel module 的代码。下面这些例子正确运行需要的options。

1. 如果你是给64-bit-SPARC结构编译,用下面的命令

% gcc -D_KERNEL -m64 -mcpu=v9 -mcmodel=medlow -fno-pic -mno-fpu -ffreestanding -nodefaultlibs -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o
也可能会用到-mutune=operation 和 -o2 选项

2. 如果你是给一个32位的结构编译,用下面的build 命令

% gcc -D_KERNEL -ffreestanding -nodefaultlibs -c mydriver.c
% /usr/ccs/bin/ld -r -o mydriver mydriver.o

For more information on these and other options, see the gcc(1) man page.See also the GCC web site at http://gcc.gnu.org/. More information about usingthe gcc compiler with the Solaris OS is on the OpenSolaris web siteat http://opensolaris.org/os/community/tools/gcc/.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值