使用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 .