是否可以构建一个使用另一个已编译库的库?
我有一些用于正常构建可执行文件的make文件。在制作可执行文件时,我使用-L ../include/lib1.a来包含原始库。
现在,我正在构建一个单独的程序,它从可执行文件中调用类,它从未构建到库中,只是通过类似
的链接编译为可执行文件。${CPP} -c ${INC} ${CFLAGS} MyFile.cpp ${OBJ} ${LIB2} -lm
其中LIB2包含对lib1.a的引用
现在我想直接访问MyFile.cpp类,当我将它构建到自己的库lib2.a,并尝试从新程序中调用它时,我得到一堆错误,它引用的类是失踪。尽管在构建新程序时,我在lib1.a和lib2.a
中进行链接。答案 0 :(得分:1)
应:
-L../include/lib1.a
不是:
-L../include -llib1
即。 -L表示库搜索路径,-l表示存档名称?
答案 1 :(得分:0)
是的,你应该能够做到。看到你得到的确切错误会很有帮助。
如果您将源代码编译到库中并提供他们在命令行中使用的库,编译器可能会将其他库放入您的新库中。如果发生这种情况,然后有人试图针对您的库和其他人构建程序,他们将会得到一堆“双重定义的符号”错误。
答案 2 :(得分:0)
构建lib2.a时,它不包含lib1.a中包含的对象文件。
您的最终可执行文件必须链接到它们。