拳头我很困惑,如果我在链接器/库下设置库或在“路径和符号”下设置它们。我认为他们是一样的。我是对的吗?
我的问题的任何方式 - 我需要链接静态库,所以我尝试了一些东西:
首先尝试我尝试在链接库中添加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
This post dosnt给出了答案,并没有解释你如何定义与静态vs共享的不同链接。
谢谢
答案 0 :(得分:17)
经过大量研究而没有相关答案。找到了!!! 我在this useful link for eclipse-cdt
中找到了它显然,图书馆需要存在于工作区中。
答案 1 :(得分:3)
将库路径/文件添加到:属性 - C / C ++构建 - 设置 - GCC C ++链接器 - 其他 - 其他对象
答案 2 :(得分:1)
我将Botan加密库构建为静态库,原因是我不想进入这里,当我按照互联网上的所有步骤进行操作时,添加库路径并指定库名称而不用& #34; LIB"和#34; .a",我的项目建立得很好,然而,当我运行它时,我一直得到"程序意外终止" (或类似的)错误。最后我想出了如何解决它。在菜单栏中,转到项目>属性> C / C ++ Build>设置>交叉G ++链接器并在-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。