Documentation Home
> Solaris(64 位)开发者指南
Solaris(64 位)开发者指南
Book Information
索引
数字和符号
A
D
E
G
I
L
P
S
U
包
编
常
打
大
代
调
符
格
互
兼
进
库
链
内
派
数
头
限
指
前言
第 1 章 64 位计算
突破 4 GB 限制
突破大地址空间限制
第 2 章 何时使用 64 位
主要功能
大虚拟地址空间
大文件
64 位运算
取消系统限制
互操作性问题
内核内存读取器
/proc 限制
64 位库
评估转换工作
第 3 章 比较 32 位接口和 64 位接口
应用编程接口
应用程序二进制接口
32 位应用程序和 64 位应用程序之间的兼容性
应用程序二进制对象
应用程序源代码
设备驱动程序
运行的是哪种 Solaris 操作环境?
第 4 章 转换应用程序
数据模型
实现单一源代码
功能测试宏
派生类型
<sys/types.h> 文件
<inttypes.h> 文件
定宽的整数类型
uintptr_t 和其他有用的类型
常量宏
<inttypes.h> 定义的限制
格式字符串宏
工具支持
用于 32 位和 64 位环境的 lint
转换为 LP64 的指导原则
请勿假设 int 和指针的长度相同
请勿假设 int 和 long 的长度相同
符号扩展
使用指针运算而不是地址运算
对结构重新压缩
检查联合类型
指定常量类型
注意隐式声明
sizeof 是 unsigned long
使用强制类型转换说明意图
检查格式字符串转换操作
其他注意事项
长度增加的派生类型
检查更改的副作用
检查直接使用 long 类型是否仍有意义
对显式 32 位与 64 位原型使用 #ifdef
算法更改
入门清单
程序样例
第 5 章 开发环境
生成环境
头文件
编译器环境
32 位和 64 位库
链接目标文件
LD_LIBRARY_PATH 环境变量
$ORIGIN 关键字
对 32 位和 64 位应用程序进行打包
库和程序的位置
打包原则
应用程序命名约定
Shell 脚本包装
/usr/lib/isaexec 二进制文件
isaexec(3c) 接口
调试 64 位应用程序
第 6 章 高级主题
SPARC V9 ABI 特征
栈偏移量
SPARC V9 ABI 的地址空间布局
SPARC V9 ABI 文本和数据的位置
SPARC V9 ABI 的代码模型
AMD64 ABI 特征
amd64 应用程序的地址空间布局
对齐问题
进程间通信
ELF 和系统生成工具
/proc 接口
sysinfo(2) 的扩展
libkvm 和 /dev/ksyms
libkstat 内核统计信息
stdio 的更改
性能问题
64 位应用程序的优点
64 位应用程序的缺点
系统调用问题
EOVERFLOW 的含义
谨慎使用 ioctl()
附录 A 派生类型更改
附录 B 常见问题解答 (Frequently Asked Question, FAQ)
© 2010, Oracle Corporation and/or its affiliates