Olej писал(а):
по поводу "в догонку" : я догадываюсь (с трудом) о чём речь, остальные кто читать станет форум - ни в коем разе;
Да немного странно получилось, но дело в том что я отправил два сообщения. Просто первое начал писать на работе и сохранил в черновиках, а дома уже отправил первое и написал и сразу отправил второе. Ну да ладно.
В первом моём сообщении речь шла о том, что формат вывода команды ls -l, как оказалось, может отличаться. В Ubuntu 11.10 он имеет например следующий вид:
ls -l
total 96
drwxrwxr-x 7 user user 4096 2011-07-02 13:11 dev
drwxrwxr-x 2 user user 4096 2011-08-27 21:57 dma
В Fedora 13 он имеет другой вид. Разница состоит в количестве полей вывода (при IFS=<default>). Я не стал разбираться в причине такого плюрализма (первые подозрения пали на локаль, так как разница проявляется в формате даты-времени, но как показала проверка - от локали формат вывода не зависит), и просто предложил воспользоваться другой утилитой.
В Makefile`ах, которые отвечают за рекурсивную сборку примеров:
Kexamples.BOOK/Makefile
Kexamples.BOOK/dev/Makefile
Kexamples.BOOK/memory/Makefile
Kexamples.BOOK/sys_call_table/Makefile
Kexamples.BOOK/user_space/libraries/Makefile
заменить строку
Код: Выделить всё
SUBDIRS = $(shell ls -l | awk '/^d/ { print $$9 }')
на
Код: Выделить всё
SUBDIRS = $(shell find . -maxdepth 1 -mindepth 1 -type d -printf "%f\n"')
Первый и второй вариант имеют недостатки - они не будут работать если в имени дирректории есть пробельный символ. В случае если пользователь захочет воспользоваться данной схемой сборки (либо путём добавления своей папки, либо заимствуя Makefile в свой проект), и при этом создаст папку в имени которой есть пробел(ы) данный сценарий не сработает. Причина в
"The only processing make does on the result is to convert each newline (or carriage-return / newline pair) to a single space. If there is a trailing (carriage-return and) newline it will simply be removed."(
http://www.gnu.org/savannah-checkouts/g ... ction.html). Я не нашёл способа элегантно решить эту проблему, хотя "тапорный" метод имеется.