使用libdevmapper编译/链接应用程序

问题描述:

我实际上是在LVM源代码目录中进行make和make install,以便我可以使用-ldevmapper编译和链接我的应用程序。使用libdevmapper编译/链接应用程序

我想知道这是否是使用libdevmapper构建/链接应用程序的唯一方式(正确方法)?

首选的方法似乎是使用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} 

(我选择> = 48年1月2日在这里,因为这是一个版本,其中“-EBUSY问题”见d是固定的;这个问题似乎意味着尝试解除dm设备的解除关联有时返回-EBUSY,因为linux块层没有完成使用,例如,直接在umount系统调用完成后)。

您可以使用它来构建libdevmapper并将其用于您自己的项目中。

make device-mapper 

而lvm2/libdm/libdevmapper.so中的libdevmapper.so是你想要的。
你仍然需要使用./configure来生成lvm2 makefile
这是我的lib文件在我的libdevmapper相关项目中。我将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 .