xstr 命令

用途

从 C 程序中提取字符串以实现共享字符串。

语法

Xstr] [  -c ] [  ] [ 文件 ]

描述

xstr 命令维护一个名为 strings 的文件,大型程序各组件的字符串散列到该文件中。 这些字符串替换为此数组的引用。 这适合于实现共享常量字符串,如果它们也是只读属性则更有用。

命令:

xstr -c File

文件 参数中的 C 源抽取字符串,将字符串引用替换为某些数字的格式 (&xstr[数字]) 的表达式。 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 文件中创建新字符串的时间。
- 读取标准输入。

示例

  1. 要从 File.c 参数中的 C 源抽取字符串,请将字符串引用替换为格式 (&xstr[数字]) 的表达式:
    xstr -c File.c
    xstr 数组的适当声明添加到文件首部。 得到的 C 文本放入文件 x.c 中,然后进行编译。
  2. 要在 xs.c 文件中声明公共 xstr 数组空间:
    xstr

文件

描述
字符串 包含抽取字符串的文件。
x.c 处理过的 C 源程序。
xs.c xstr 数组定义的 C 源程序。
/tmp/xs* xstr 命令不更改 strings 文件时的临时文件
/usr/ccs/bin/mkstr 包含可执行文件。
/usr/ccs /bin/mkstr 包含 Berkeley 环境中的可执行文件。