0

假设我有两个版本的库位于文件夹“V1”和“V2”中,并且我有两个 C 文件:“v1.c”和“v2.c”,其中“v1.c”将使用库“V1” ”,而“v2.c”将使用库“V2”。请注意,“V1”和“V2”具有相同的接口。我试过了:

g++ -c v1.c -o v1.o -I${V1}include
g++ -c v2.c -o v2.o -I${V2}include
g++ main.c -L${V1}lib v1.o -L${V2}lib v2.o -lsomething

请注意,我在最后一个链接步骤中的 2 个目标文件之前提供了 2 个库路径。显然它不会达到我的预期,但我展示它只是为了表达我的意图。感谢您的任何建议。

4

1 回答 1

1

它将使用第一个找到的合适符号,即如果您在两个库中都有一个函数“bar”,并且库具有相同的名称,则将使用搜索中首先出现的文件中的函数“bar”。

您可以为不同库中的符号赋予不同的名称(它们仍然具有相同的名称),或者为库赋予不同的名称。

虽然我仍然不确定重命名符号是否会有所帮助,因为链接器可能只是链接到第一次遇到的库,然后抱怨它不包含其他需要的符号。最可靠的方法是重命名库。

如果有不清楚的地方请评论,我会尝试进一步解释。

于 2013-02-15T10:33:59.290 回答