繁体   English   中英

使用Makefile对共享库进行单元测试

[英]Unit-testing shared library with Makefile

我正在编写一个共享库,我编写了一个单元测试可执行文件。 我想在Makefile中创建一个目标,它将启动测试例程。

单元测试可执行文件链接到刚刚创建的库。

在Makefile中运行可执行文件时,我得到了

./starttest: error while loading shared libraries: libllist.so: cannot open shared object file: No such file or directory

哪种方式更好地解决这个问题?

  1. 如下所示在Makefile中定义LD_LIBRARY_PATH

    export LD_LIBRARY_PATH = $(CURDIR)/ lib

  2. 强制用户在运行测试之前安装库?

  3. 不要从Makefile开始单元测试,用户可以自己完成。

或许我错过了一些东西,甚至还有更好的方法?

我会使用选项#1,如果你想要的是通过makefile调用单元测试。 绝对不应该使用选项#2,我也不喜欢选项#3。

第四种方法是使用-rpath链接器选项构建单元测试程序,以将共享库的位置编码到单元测试程序中。 例如,如果您使用GCC -Wl,-rpath=$(CURDIR)-Wl,-rpath=$(CURDIR) 这允许从命令行调用单元测试,而不需要设置LD_LIBRARY_PATH等。

对于最终的二进制文件(将构建目录编码到它们中)这不是一个好主意,但是对于单元测试二进制文件来说这很好,无论如何你都不会在构建目录之外使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM