我正在尝试将应用程序与GCC中的多个静态库链接。
有两个库会导致问题。 Libsupport为应用程序提供终端。它依赖于libcpu来提供串行链路,定时和同步。 Libcpu依靠libsupport为串行数据提供排队等等。
如果我在链接libcpu时首先指定libsupport,则无法与队列函数链接。我是否指定libcpu第一个lib支持无法链接串行链接(以及更多)函数。
看起来GCC只解析一次库并丢弃任何未使用的对象。
我可以让gcc多次解析库或包含所有对象吗?
答案 0 :(得分:9)
gcc ... -lsupport -lcpu -lsupport -lcpu
- >每次提到一个库都会导致它之前的库被解析(但不一定是之后指定的库),这就是为什么你将来可能需要指定更多的“-lsupport -lcpu”。
或者,请尝试--start-group -lsupport -lcpu --end-group
一次。
答案 1 :(得分:6)
Here详细解释了为什么在这种情况下需要重复库或使用--start/--end-group
。
答案 2 :(得分:2)
您通常可以多次指定一个库以解决此类问题,例如
$ gcc ... -lsupport -lcpu -lsupport ...