14

我很困惑应该在链接器/库下设置库还是将它们设置在“路径和符号”下。我认为它们是一样的。我对么?

我的问题的任何方式 - 我需要链接静态库,所以我尝试了几件事:

首先尝试我尝试在链接库中添加gtest(这是库)和gtest路径。这样它的编译和链接正确,但在运行时失败,因为当它试图加载共享库时(我想要静态库!)错误是

加载共享库时出错:libgtest.so.0

第二次尝试- 我尝试在路径和符号中定义它,将完整路径 '/root/workspace/gmock/gtest/lib/.lib/libgtest.a' 添加到库中。在这种情况下,我在链接中遇到错误:

g++ -L/root/workspace/gmock/lib/.libs -L/root/workspace/gmock/gtest/lib/.libs -o "playground"  ./src/p.o ./src/playground.o   -lpthread -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a -l/root/workspace/gmock/lib/.lib/libgmock.a
/usr/bin/ld: cannot find -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a

这篇文章没有给出答案,也没有解释你如何定义静态链接和共享链接。

谢谢

4

3 回答 3

17

经过大量研究并且没有相关答案。找到了!!!我在eclipse-cdt 这个有用的链接中找到了它

显然,该库需要存在于工作区中。

于 2012-07-25T07:40:49.070 回答
4

将库路径/文件添加到:Properties - C/C++ Build - Settings - GCC C++ Linker - Miscellaneous - Other objects

于 2015-07-07T18:30:45.817 回答
1

我将 Botan 密码库构建为静态库,出于我不想进入这里的原因,当我按照互联网上的所有步骤进行操作时,添加库路径并指定库名称,不带“lib”和“。 a”,我的项目构建得很好,但是,当我运行它时,我不断收到“程序意外终止”(或类似)错误。最后我想出了如何解决它。在菜单栏中,转到 Project > Properties > C/C++ Build > Settings > Cross G++ Linker 并在and-static之间添加,因此整行如下所示:${COMMAND}${FLAGS}

${COMMAND} -static ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

您的可能会有所不同。我正在使用 Eclipse Luna Service Release 2 (4.4.2),在 Windows 8.1 上使用 mingw-w64 mingw-builds 项目 w/gcc 4.9.2。

于 2015-03-19T00:20:47.720 回答