linux 上的 codelite、unittest++ 和 g++ 的链接器错误
Linker errors with codelite, unittest++ and g++ on linux
我是 c++ 单元测试的新手,也是在 Linux (Mint) 上编写 c++ 的新手。我正在使用 CodeLite 作为我的 IDE。我在 Whosebug 上找到了几个关于 linker 错误的答案,但在尝试各种解决方案数小时后,我没有成功地正确实施解决方案。
我通过 apt-get 安装了 unittest++。 unittest++ 头文件安装在 /usr/include 中,所以我将其添加到 Codelite 的编译器 linker 选项中(右键单击项目名称->设置,编译器):
Codelite screenshot
然后我有一个非常简单的程序,它完全由一个 main.cpp 文件组成:
#include <unittest++/UnitTest++.h>
//See if unit tests are working
TEST(MyMath) {
CHECK(false);
}
int main()
{
UnitTest::RunAllTests();
return 0;
}
运行 此时项目会产生一连串 linker 其他用户遇到过的错误,例如:
main.cpp:4: 未定义对 UnitTest::CurrentTest::Details()
的引用
在这一点上,我的理解是我现在需要将目标文件告诉 g++ 编译器,并将它们 link 告诉 unittest++ 文件。这就是我被困的地方。我看到的唯一 .o 文件在 Debug/main.cpp.o 和 运行 命令
g++ main.cpp -o main.cpp.o -Lunittest++
以及 I 和 o 标志的变体,但它们都 return 与我在尝试编译时遇到的相同 linker 错误。我还尝试复制论坛中的每一行 g++,但只出现各种错误。
我试图在 g++ 手册页中找到解决方案,阅读了我一直在使用的标志,但没有推断出解决方案。然后我很快就被 man 条目中的大量页面埋没了。 CodeLite 和 unittest++ 的文档似乎已经过时了,所以作为最后的手段,我在 Whosebug 上发布了这里。
我很确定我只是犯了一个新手错误。如果有人有反馈,我将不胜感激。
在您的解释中,您尝试使用 g++ -c main.cpp -o main.cpp.o -Lunittest++
手动 link,但 -L
选项提供了用于搜索库的其他目录的路径。您可能希望 -lunittest++
到 link 与 unittest++ 库。该库应提供您在 "undefined reference" 错误中看到的符号。
附带说明一下,“/usr/include”应该在默认搜索路径中,无需显式添加。
我是 c++ 单元测试的新手,也是在 Linux (Mint) 上编写 c++ 的新手。我正在使用 CodeLite 作为我的 IDE。我在 Whosebug 上找到了几个关于 linker 错误的答案,但在尝试各种解决方案数小时后,我没有成功地正确实施解决方案。
我通过 apt-get 安装了 unittest++。 unittest++ 头文件安装在 /usr/include 中,所以我将其添加到 Codelite 的编译器 linker 选项中(右键单击项目名称->设置,编译器): Codelite screenshot
然后我有一个非常简单的程序,它完全由一个 main.cpp 文件组成:
#include <unittest++/UnitTest++.h>
//See if unit tests are working
TEST(MyMath) {
CHECK(false);
}
int main()
{
UnitTest::RunAllTests();
return 0;
}
运行 此时项目会产生一连串 linker 其他用户遇到过的错误,例如:
main.cpp:4: 未定义对 UnitTest::CurrentTest::Details()
在这一点上,我的理解是我现在需要将目标文件告诉 g++ 编译器,并将它们 link 告诉 unittest++ 文件。这就是我被困的地方。我看到的唯一 .o 文件在 Debug/main.cpp.o 和 运行 命令
g++ main.cpp -o main.cpp.o -Lunittest++
以及 I 和 o 标志的变体,但它们都 return 与我在尝试编译时遇到的相同 linker 错误。我还尝试复制论坛中的每一行 g++,但只出现各种错误。
我试图在 g++ 手册页中找到解决方案,阅读了我一直在使用的标志,但没有推断出解决方案。然后我很快就被 man 条目中的大量页面埋没了。 CodeLite 和 unittest++ 的文档似乎已经过时了,所以作为最后的手段,我在 Whosebug 上发布了这里。
我很确定我只是犯了一个新手错误。如果有人有反馈,我将不胜感激。
在您的解释中,您尝试使用 g++ -c main.cpp -o main.cpp.o -Lunittest++
手动 link,但 -L
选项提供了用于搜索库的其他目录的路径。您可能希望 -lunittest++
到 link 与 unittest++ 库。该库应提供您在 "undefined reference" 错误中看到的符号。
附带说明一下,“/usr/include”应该在默认搜索路径中,无需显式添加。