【发布时间】:2013-12-09 16:34:01
【问题描述】:
我正在寻找一种方法来对链接到可执行文件的 C++ 应用程序进行单元测试。我正在使用 googletest,我需要将测试可执行文件链接到被测二进制文件以测试该二进制文件。就我而言,被测二进制文件是可执行文件。在 Windows 上,我可以为测试的可执行文件创建一个导入库,并将测试可执行文件与其链接。只要我不从测试的二进制文件中导出主函数,它就可以正常工作。 但是在 Linux 上我无法做到这一点。当直接与测试的可执行文件链接时,链接失败,因为有两个主要功能,一个在测试的可执行文件中,一个在测试的可执行文件中。而且我不知道有什么方法可以在 Linux 上创建导入库并与之链接。
我知道我可以将测试过的可执行文件分成一个包含所有功能的共享库和一个只包含主要功能的小型可执行文件。测试程序将与共享库链接。但这是我真的不想做的事情,因为我需要测试 20 多个这样的可执行文件,并将它们中的每一个划分到一个共享库中,并且由于多种原因,一个可执行文件会花费太长时间。
另一种可能是将测试的源代码添加到测试项目中,但是测试的源代码会被编译两次,由于构建时间长,我负担不起。
所以我想弄清楚是否可以在 Linux 上做一些类似于我在 Windows 上所做的事情。
提前谢谢你。
【问题讨论】:
-
不要将 main 编译成共享库。你还期待什么其他答案?
标签: c++ linux linker shared-libraries googletest