具有相同名称的对象文件的静态库包含具有相同名称的静态变量

时间:2019-03-14 22:03:09

标签: c static linker

假设我们有这个源代码树:

.
└── src
    ├── foo
    │   ├── common.c
    │   └── foo.c
    └── bar
        ├── common.c
        └── bar.c

src/foo/common.csrc/bar/common.c中,两个文件中都有名为static的不同common_var变量,它们显然对应于不同的变量。

所有文件都将被编译成tmp/(包括tmp/foo/common.stmp/bar/common.s中的类似树,随后被组装成目标文件(包括tmp/foo/common.o和{{1} }),所有这些目标文件都将进入tmp/bar/common.o,该文件将被某些程序使用。

以该文件树结尾:

lib/libfoobar.a

可以,还是编译器/链接器/有任何问题?

相关:Static library having object files with same name (ar)

这里的区别是内容可能会冲突。

1 个答案:

答案 0 :(得分:2)

全局静态变量具有内部链接,因此即使名称没有任何差异(无论是否乱码),也无法将它们视为相同。

不会有冲突。