web-dev-qa-db-ja.com

Gentoo静的にリンクされたLVMをコンパイルする方法は?

まだlivecdステージにある(今のところ起動できない)Gentooインストールは、LVMを静的に出現させることができません。 initrdで使用するには、静的にコンパイルされたlvmが必要です。

私の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"をエクスポートしてみました

しかし、それは何も変更していないようで、それでも同じエラーです。

2
ioctlvoid

私にとっては(~AMD64 Gentooで)問題なく動作しますが、回避策としてlvm2からudevuseflagを削除してみてください。udevはinitramfsの段階では重要ではないためです。静的バイナリは/sbin/lvm.staticと呼ばれます(ビルドするにはstatic useflagが必要です)。 lddを使用して、バイナリが静的であるかどうかを確認できます。

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

また、静的にビルドするパッケージの依存関係について、static-libsuseflagが有効になっているかどうかを確認してください。通常、ebuildはそれらの依存関係をチェックする必要がありますが、再確認することをお勧めします。

4
frostschutz