[英]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
哪种方式更好地解决这个问题?
如下所示在Makefile中定义LD_LIBRARY_PATH
?
export LD_LIBRARY_PATH = $(CURDIR)/ lib
强制用户在运行测试之前安装库?
或许我错过了一些东西,甚至还有更好的方法?
我会使用选项#1,如果你想要的是通过makefile调用单元测试。 绝对不应该使用选项#2,我也不喜欢选项#3。
第四种方法是使用-rpath
链接器选项构建单元测试程序,以将共享库的位置编码到单元测试程序中。 例如,如果您使用GCC -Wl,-rpath=$(CURDIR)
: -Wl,-rpath=$(CURDIR)
。 这允许从命令行调用单元测试,而不需要设置LD_LIBRARY_PATH等。
对于最终的二进制文件(将构建目录编码到它们中)这不是一个好主意,但是对于单元测试二进制文件来说这很好,无论如何你都不会在构建目录之外使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.