小编and*_*ras的帖子

Linux,静态lib引用可执行文件中的其他静态库

我正在创建一个应用程序,它包含两个静态库和一个可执行文件.

让我们调用两个静态库:libusefulclass.a libcore.a

和应用程序:myapp

libcore实例化并使用libusefulclass中定义的类(让我们称之为UsefulClass)

现在,如果我按以下方式链接应用程序:

g++ -m64 -Wl,-rpath,/usr/local/Trolltech/Qt-4.5.4/lib -o myapp src1.o src2.o srcN.o -lusefulclass -lcore
Run Code Online (Sandbox Code Playgroud)

链接器抱怨找不到libusefulclass中的方法:

undefined reference to `UsefulClass::foo()'
Run Code Online (Sandbox Code Playgroud)

等等

我找到了一个解决方法:如果UsefulClass也在可执行文件本身的源文件中实例化,则应用程序链接没有任何问题.

我的问题是:是否有更简洁的方法使libcore引用libusefulclass中定义的方法,或者静态库只是无法相互链接?

TIA

PS:如果重要:使用Qt在C++中开发应用程序,但我觉得这不是Qt问题,而是一般的库问题.

c++ linux linker static

3
推荐指数
1
解决办法
389
查看次数

标签 统计

c++ ×1

linker ×1

linux ×1

static ×1