sudo btrfstune -u /dev/sdaX
sudo btrfstune -U 0de6bd81-7013-49a8-bdc5-d832ed209d2c /dev/sdaX
Запускbtrfsck
рекомендуется, поскольку изменение UUID в BTRFS не является атомарной операцией.
Вы должны понимать, что при всем сходстве в их синтаксисе, make
и shell
совершенно разные и должны использоваться с большой осторожностью. Что еще хуже, make очень скуп на предупреждения.
Вы ошиблись в двух местах в своем make
коде:
## bad code
DEPENDENCIES := $(echo '$DEPENDENT_FILES' | sed 's/\>/\.o/g')
GNU make
встроенного -в функцию с именем echo l
, потому что именно так make понимает это. $(shell...)
функцию gnu make. $DEPENDENT_FILES
. make проанализирует его как переменную make $D, за которой следует строковый литерал EPENDENT ! Это связано с тем, что если незаключенные круглые скобки или фигурные скобки представляют собой только одну букву, то сделать vars, остальные воспринимаются как буквальная строка. Then I'd like to append.o to each word.
Нет необходимости в обходе оболочки. Сделать это мощно достаточно, чтобы предоставить помощников для общих операций с именами файлов так. В вашем случае вам нужна функция с понятным именем -addsuffix
:
DEPENDENCIES = $(addsuffix.o, $(DEPENDENT_FILES))
Что дает вам a.o b.o c.o
список ввода a b c
. более полный пример:
units = a b c
inc = $(addsuffix.h,$(units))
obj = $(addsuffix.o,$(units))
myprog: $(obj)
gcc -o $@ $(obj)
header-bundle.h: $(inc)
cat $< >$@
Если вам нужны более сложные замены, есть множество универсальных подстановок. строковые операции но там, где их достаточно, файловые операции удобнее и ИМО проще понять скромному человеку.