xstr [ -v ] [ -c ] [ - ] [ File ]
xstr 命令维护一个名为 strings 的文件,大型程序各组件的字符串散列到该文件中。这些字符串替换为此数组的引用。这适合于实现共享常量字符串,如果它们也是只读属性则更有用。
命令:
xstr -c File
从 File 参数的 C 源文件中抽取字符串,用(&xstr[number])格式的表达式来替换某些数字的字符串引用。xstr 数组的适当声明添加到文件首部。得到的 C 文本放入文件 x.c 中,然后进行编译。从文件中读出的字符串会追加到 strings 文件中(如果它们在该处尚不存在)。重复的字符串和作为现有字符串后缀的字符串不会造成文件 strings 的更改。
如果某字符串是文件中另一字符串的后缀,但是这个较短的字符串是先被 xstr 命令读入,那么两个字符串都存放于文件 strings。
在一个大型程序的所有组件都被编译后,声明公共 xstr 数组空间的文件 xs.c 可以用以下格式的命令创建:
xstr
接下来应编译 xs.c 文件并装入剩下的程序。如果可能,这个数组会被保存为只读(共享)以节省空间和数据交换的开销。
xstr 命令也可以用于单个文件。命令:
xstr File
像以前一样,创建文件 x.c 和 xs.c,但是没有使用或影响任何在相同目录下的 strings 文件。
如果任何宏定义产生字符串,或者如果存在条件代码包含字符串而事实上并不需要这些字符串,在经过 C 预处理器编译后运行 xstr 命令十分有用。
当给定 -(负号)标志时,xstr 命令读取标准输入,并且除非同时指定 -c 标志,否则不会更改 strings 文件。
在经过 C 预编译器编译后运行 xstr 命令的正确命令序列是:
cc -E name.c | xstr -c - cc -c x.c mv x.o name.o
除非添加新项目,xstr 命令并不改变文件 strings;因而除非真的需要,make 命令能够避免重新生成 xs.o 文件。
-c | 从指定文件中抽取字符串,并将其放在 strings 文件中。 |
-v | 详细方式。指出字符串是何时找到的,或在 strings 文件中创建新字符串的时间。 |
- | 读取标准输入。 |
xstr -c File.c
xstr 数组的适当声明添加到文件首部。得到的 C 文本放入文件 x.c 中,然后进行编译。
xstr
strings | 包含抽取字符串的文件。 |
x.c | 处理过的 C 源程序。 |
xs.c | xstr 数组定义的 C 源程序。 |
/tmp/xs* | 当 xstr 命令不更改 strings 文件时的临时文件。 |
/usr/ccs/bin/mkstr | 包含可执行文件。 |
/usr/ccs/bin/mkstr | 包含 Berkeley 环境中的可执行文件。 |
mkstr 命令。