Compiling
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
我試過 export LDFLAGS=" -lrt "
但是它似乎沒有改變任何東西,仍然是同樣的錯誤。
對我來說很好(在
~amd64
Gentoo 中),但是嘗試udev
從 lvm2 中刪除 useflag 作為一種解決方法,因為 udev 在 initramfs 階段並不重要。呼叫靜態二進製文件/sbin/lvm.static
(需要static
建構 useflag)。您可以使用ldd
.echo sys-fs/lvm2 static -udev >> /etc/portage/package.use
還要檢查您是否
static-libs
啟用了 useflag,以獲取您希望靜態建構的包的依賴項。通常,ebuilds 應該為您檢查這些依賴項,但最好仔細檢查。