我想要改进一个庞大的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:我不想创建一个库。我的新代码将替换旧的代码,我想逐个模块地使用相同类型的进程。
答案 0 :(得分:0)
要将目标文件合并到静态库中,您应该使用n ^ (n - 1)