合并用于C链接的c ++ obj文件

时间:2017-03-23 14:14:56

标签: c++ c gcc stl

我想要改进一个庞大的C / Pro * C项目。我复制了一部分,用C ++重写了它,它编译并且工作正常。

我现在想把它包含在我的C项目中。为了做到这一点,我想将所有的小obj文件合并为一个,然后在最终链接期间将其与其他obj文件一起添加。

然而,我遇到了错误,我需要帮助。

  • 我试过ld -Ur file1.o file2.o -llib1 -llib2 -o feature.o但是我抱怨它找不到我的图书馆(没有一个)
  • 我尝试了ld -Ur file1.o file2.o -o feature.o,但后来抱怨说有大量未定义的引用各种STL元素。
  • 我试过g++ file1.o file2.o -llib1 -llib2 -o feature.o但它抱怨它找不到main()这是完全正常的,因为我不想让他做一个可执行文件
  • 我试过g++ file1.o file2.o main.o -llib1 -llib2 -o feature并且它编译得非常好,但这不是我想要的......
  • 我试过g++ -Xlinker -Ur file1.o file2.o -o feature.o so that g++ would give automagically the stl links to ld, but again, ld could not find the STL...

我该怎么办?

编辑: 我希望尽可能少地更改的主makefile包含二进制文件列表及其关联的obj文件。我希望将我的obj文件添加到其中一个列表中,以便最终链接是透明的。

EDIT2:我不想创建一个库。我的新代码将替换旧的代码,我想逐个模块地使用相同类型的进程。

1 个答案:

答案 0 :(得分:0)

要将目标文件合并到静态库中,您应该使用n ^ (n - 1)