链接器错误与linux上的codelite,unittest ++和g ++

时间:2017-03-07 19:58:44

标签: c++ linker g++ codelite unittest++

我是c ++单元测试的新手,在Linux上编写c ++(Mint)。我正在使用CodeLite作为我的IDE。我在stackoverflow上找到了关于链接器错误的几个答案,但经过几个小时的尝试各种解决方案后,我还没有成功地正确实现解决方案。

我通过apt-get安装了unittest ++。 unittest ++头文件安装在/ usr / include中,因此我将其添加到Codelite中的编译器链接器选项(右键单击项目名称 - >设置,编译器): Codelite screenshot

然后我有一个非常简单的程序,它完全由一个main.cpp文件组成:

#include <unittest++/UnitTest++.h>
//See if unit tests are working
TEST(MyMath) {
    CHECK(false);
}

int main()
{
    UnitTest::RunAllTests();
    return 0;
}

此时运行项目会生成其他用户遇到的链接器错误流,例如:

main.cpp:4:对UnitTest::CurrentTest::Details()

的未定义引用

此时,我的理解是我现在需要告诉g ++编译器有关目标文件并将它们链接到unittest ++文件。这就是我被困住的地方。我看到唯一的.o文件位于 Debug / main.cpp.o 并运行命令
    g ++ main.cpp -o main.cpp.o -Lunittest ++ 以及I和o标志的变体,但它们都返回我尝试编译时得到的相同链接器错误。我还尝试在论坛中复制每个g ++行,只会出现各种错误。

我试图在g ++手册页中找到一个解决方案,阅读我一直在使用的标志,并没有推断出解决方案。然后我很快就被埋在了男人入口的大量页面中。 CodeLite和unittest ++的文档似乎已经过时了,所以我在stackoverflow上发布这个作为最后的手段。

我很确定我只是犯了一个菜鸟错误。如果有人有反馈意见,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

在您的解释中,您尝试手动链接g++ -c main.cpp -o main.cpp.o -Lunittest++,但-L选项提供了搜索库的其他目录的路径。您可能希望-lunittest++与unittest ++库链接。该库应提供您在&#34;未定义的参考中所看到的符号&#34;错误。

作为旁注,&#34; / usr / include&#34;应该在默认搜索路径中,并且不需要明确添加它。