假设我的应用程序中需要libA.a。 libA.a需要libB.a本身,我需要在我的应用程序中静态链接到它们。为了消除这种情况,我将这两个(libA.a和libB.a)合并为libAB.a(这是使用ar工具完成的)。还没问题。
当我想运行我的应用程序(链接到libAB.a)时,编译器开始抱怨libA中使用libB的方法的未定义引用!当我将应用程序链接到libB.a以及libAB.a时,一切正常!根据文件大小,似乎libAB.a是libA和libB合并的结果,但在编译时似乎只有libA可供应用程序使用。
这是合并命令:
ar rcus -v ../lib/libPocoFoundationmtd.a @"Foundation.txt" "c:/MinGW/lib/libiphlpapi.a"
Foundation.txt包含一个.o文件列表,它将创建一个.a文件。 这是我的应用程序的编译命令:
g++ -o ./Debug/exe1 @"exe1.txt" -L. -Lc:/poco/lib/ -lPocoFoundationmtd
答案 0 :(得分:0)
似乎我找到了解决方案!我在合并的.a文件中混合了.o和.a文件(目标文件+静态库)。我做了ar-x来提取.a文件的内容,然后我将所有.o文件合并到一个最终的merged.a库中
抱歉延迟:)