我实际上是在LVM源代码目录中进行make和make install,因此我可以使用-ldevmapper编译和链接我的应用程序。
我想知道这是否是使用libdevmapper构建/链接应用程序的唯一方法(正确方法)?
答案 0 :(得分:2)
您可以使用它来构建libdevmapper并在您自己的项目中使用它。
make device-mapper
lvm2 / libdm / libdevmapper.so中的libdevmapper.so就是你想要的。
您仍然需要使用./configure来生成lvm2 makefile
这是我的libdevmapper相关项目中的Makefile。我将lvm2源放在我的项目目录下的子目录中。
main: libdevmapper.so libdevmapper.h
gcc -ldevmapper main.c -o main
libdevmapper.so:
cd ./lvm2&&./configure
make -C ./lvm2 device-mapper
cp ./lvm2/libdm/libdevmapper.so .
libdevmapper.h:
cp lvm2/libdm/libdevmapper.h .
答案 1 :(得分:0)
首选方法似乎是使用pkg-config,因为我在系统上找到devmapper.pc
。 (有时会出现上游项目没有发送.pc文件,而发行版添加一个,例如openssl IIRC的情况,所以我碰巧使用的发行版中存在devmapper.pc
文件可能不需要意味着任何东西。)
从configure.ac
开始,您可以调用
PKG_CHECK_MODULES([libdevmapper], [devmapper >= 1.02.48])
并将其用于Makefile.am
:
AM_CPPFLAGS = ${libdevmapper_CFLAGS}
bin_PROGRAMS = foo
foo_LDADD = ${libdevmapper_LIBS}
(我在这里选择> = 1.02.48,因为这是一个版本,其中“-EBUSY问题”似乎已修复;问题似乎需要尝试取消关联dm设备有时返回-EBUSY因为linux阻止层没有完成使用这些,例如直接在umount系统调用完成后。)