Gentoo如何编译静态链接的LVM?

Gentoo如何编译静态链接的LVM?

仍处于 livecd 阶段的 Gentoo 安装(目前无法启动)无法静态出现 LVM。我需要一个静态编译的 lvm 才能在我的 initrd 中使用它。

我的make.conf:

CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
USE="bindist mmx sse sse2 static"

出现编译错误:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/../../../../lib64/libudev.a(time-util.o): In function `now': (.text.now+0x8): undefined reference to `clock_gettime'

我还注意到:

  • 警告,我们不再用以下内容覆盖 /sbin/lvm 和 /sbin/dmsetup
  • 他们的静态版本。如果您需要静态二进制文件,
  • 您必须将 .static 附加到文件名!

这是什么意思?我该如何将这个“.static”附加到文件名中?

我看到这个人也有同样的问题,但没有答案:http://archives.gentoo.org/gentoo-user/msg_eb40f5d76161fda72d134551cc26d989.xml

我还注意到这个线程:http://forums.gentoo.org/viewtopic-p-4892618.html?sid=e41b07d9b8554c10430619e1f51d564a

我尝试导出LDFLAGS =“-lrt”

然而它似乎没有改变任何东西,仍然是同样的错误。

答案1

对我来说工作得很好(在~amd64Gentoo 中),但是尝试从udevlvm2 中删除 useflag 作为解决方法,因为 udev 在 initramfs 阶段并不重要。调用静态二进制文件/sbin/lvm.static(需要static构建 useflag)。您可以使用 检查二进制文件是否是静态的ldd

echo sys-fs/lvm2 static -udev >> /etc/portage/package.use

还要检查您是否static-libs启用了 useflag,以获取您希望静态构建的包的依赖项。通常 ebuild 应该为您检查这些依赖关系,但最好仔细检查。

相关内容