使用 makefile 和 g++ 链接到静态库

Linking to a static library with a makefile and g++

我想 link 我的 C++ 可执行文件到静态 (libStatic.a) 和共享 (libShared.so) 库,使用 makefile。

到目前为止的 makefile 包含以下内容:

myExe: main.cpp libStatic.a libShared.so
    g++ main.cpp libStatic.a libShared.so

我相当确定静态 linking 是正确的,因为我在别处看到过类似的东西。我不确定的是共享 linking 部分。这个对吗?或者 link 对静态库的处理方式不同?

如果我 运行 make,那么它似乎没问题,并创建了可执行文件。但是,当我执行此操作时,我收到错误消息:

/usr/bin/ld: cannot find -lShared

但是,我的可执行文件和 libShared.so 在同一目录中。

您需要将 LD_LIBARY_PATH 设置为共享对象所在的目录,然后再 运行 您的程序。

您可以阅读 man ld 中的 'rpath' 了解其他可能性。