ZHCU947E June 2015 – January 2023
--make_static 选项会将所有全局符号都设为静态。静态符号对外部链接的模块不可见。通过将全局符号设为静态,全局符号本质上将是隐藏状态。这样一来,同名(在不同文件中)的外部符号将被视为具有唯一性。
--make_static 选项实际上会使所有 .global 汇编器指令无效。所有符号都成为了定义它们的模块中的局部符号,因此不能有外部引用。例如,假设 file1.c.obj 和 file2.c.obj 都定义了名为 EXT 的全局符号。使用 --make_static 选项可以确保在链接这些文件时不发生冲突。将分开处理 file1.c.obj 中定义的符号 EXT 与 file2.c.obj 中定义的符号 EXT。
cl6x --run_linker --make_static file1.c.obj file2.c.obj
--make_static 选项会将所有全局符号都设为静态。如果您有一个想要保持全局属性的符号,并且您使用 --make_static 选项,则可以使用 --make_global 选项将该符号声明为全局。--make_global 选项会使您为符号指定的 --make_static 选项无效。--make_global 选项的语法为:
--make_global= global_symbol