Linker gcc嵌套库和链接器依赖项

Linker gcc嵌套库和链接器依赖项,linker,dependencies,nested,Linker,Dependencies,Nested,情况: 我有一个静态库“lib1.a” 第二个静态库“lib2.a”,使用“lib1.a”的函数 直接使用“lib2.a”函数的应用程序 当我链接应用程序时,我必须传递到应用程序依赖项“lib1.a”,即使应用程序不直接调用任何lib1函数。Lib2是一种更高级的包装器库 有没有办法在lib2内部链接lib1(一种中间链接),这样“应用程序”甚至不知道lib1的存在 我知道我可以压缩lib1.a并将对象文件包含在lib2.a中,但是是否有其他方法可以自动完成,并且只将使用过的对象文件包含在l

情况:

  • 我有一个静态库“lib1.a”
  • 第二个静态库“lib2.a”,使用“lib1.a”的函数
  • 直接使用“lib2.a”函数的应用程序
当我链接应用程序时,我必须传递到应用程序依赖项“lib1.a”,即使应用程序不直接调用任何lib1函数。Lib2是一种更高级的包装器库

有没有办法在lib2内部链接lib1(一种中间链接),这样“应用程序”甚至不知道lib1的存在

我知道我可以压缩lib1.a并将对象文件包含在lib2.a中,但是是否有其他方法可以自动完成,并且只将使用过的对象文件包含在lib2中?链接最后一个应用程序时进行链接

{app}-uses->{lib2}-uses->{[lib1]}

干杯, 戴维德

还有别的办法吗

不,没有(在我所知道的任何类UNIX系统上)

当使用GNU-
ld
gold
时,您所能做的最好的事情就是编写一个
libcombined.a
作为链接器脚本,包含
-l2-l1
,并将应用程序指向它