链接在GCC中包含循环引用的库

Ger*_*ard 5 linker gcc static-libraries

我正在尝试将应用程序与GCC中的多个静态库链接.

有两个库会导致问题.Libsupport为应用程序提供终端.它依赖于libcpu来提供串行链路,定时和同步.Libcpu依靠libsupport为串行数据提供排队等.

如果我在链接libcpu时首先指定libsupport,则无法与队列函数链接.是我指定libcpu第一个lib支持无法链接串行链接(和更多)功能.

看起来GCC只解析一次库并丢弃任何未使用的对象.

我可以要求gcc多次解析库或包含所有对象吗?

use*_*374 9

gcc ... -lsupport -lcpu -lsupport -lcpu
Run Code Online (Sandbox Code Playgroud)

- >每次提到一个库都会导致它之前的库被解析(但不一定是之后指定的库),这就是为什么你将来可能需要指定更多的"-lsupport -lcpu".

或者,尝试--start-group -lsupport -lcpu --end-group一次.

  • 组说明符很有趣......以前从未见过。 (2认同)

Emp*_*ian 6

这里详细解释了为什么--start/--end-group在这种情况下需要重复库或使用.