【发布时间】:2019-03-14 22:03:09
【问题描述】:
假设我们有这个源代码树:
.
└── src
├── foo
│ ├── common.c
│ └── foo.c
└── bar
├── common.c
└── bar.c
在src/foo/common.c 和src/bar/common.c 中,我们在两个文件中都有不同的static 变量,名为common_var,显然对应不同的变量。
所有文件将编译成tmp/中的类似树(包括tmp/foo/common.s和tmp/bar/common.s),然后组装成目标文件(包括tmp/foo/common.o和tmp/bar/common.o),所有这些目标文件都会去进入lib/libfoobar.a,将被某些程序使用。
以此文件树结尾:
.
├── lib
│ └── libfoobar.a
├── src
│ ├── foo
│ │ ├── common.c
│ │ └── foo.c
│ └── bar
│ ├── common.h
│ └── bar.hpp
└── tmp
├── foo
│ ├── common.o
│ ├── common.s
│ ├── foo.o
│ └── foo.s
└── bar
├── common.o
├── common.s
├── bar.o
└── bar.s
可以吗,还是会出现编译器/链接器/任何问题?
相关:Static library having object files with same name (ar)
这里的区别是内容可能会发生冲突。
【问题讨论】: