Данная лабораторная работа посвещена изучению утилит для разработки проектов.
- Скачаем библиотеку boost с помощью утилиты wget
$ wget https://sourceforge.net/projects/boost/files/boost/1.69.0/boost_1_69_0.tar.gz
HTTP-запрос отправлен. Ожидание ответа… 200 OK
Длина: 111710205 (107M)
Сохранение в: «boost_1_69_0.tar.gz»
- Разархивируем скаченный файл в директорию ~/boost_1_69_0.
$ tar -xvf boost_1_69_0.tar.gz
- Подсчитаем количество файлов в директории ~/boost_1_69_0, не включая вложенные.
$ ls | wc -l
Ответ на команду: 18
- Подсчитаем количество файлов в директории ~/boost_1_69_0, включая вложенные.
$ find /home/sonojy/Downloads/boost_1_69_0 -type f | wc -l
Ответ на команду:61 191
- Подсчитаем количество заголовочных файлов, файлов с расширением .cpp и количество остальных файлов
$ find. | grep -i ".hpp$" | wc -l
Ответ на команду:28099
$ find. | grep -i ".cpp$" | wc -l
Ответ на команду: 13 778
$ find . -and -type -f -and -not -name “*.cpp” -and -not -name “*.h” -and -not - name “*.hpp” | wc -l
Ответ на команду:32 211
- Найдем пути до различных файлов any.hpp внутри библиотеки
$ find . -name “any.hpp”
Ответ на команду:
./boost/fusion/include/any.hpp
./boost/fusion/algorithm/query/any.hpp
./boost/fusion/algorithm/query/detail/any.hpp
./boost/spirit/home/support/algorithm/any.hpp
./boost/proto/detail/any.hpp
./boost/type_erasure/any.hpp
./boost/hana/fwd/any.hpp
./boost/hana/any.hpp
./boost/any.hpp
./boost/xpressive/detail/utility/any.hpp
- Выведем в консоль все файлы, где упоминается последовательность boost::asio.
$ grep -Ril “boost::asio” .
Ответ на команду:
./boost/beast/experimental/core/impl/timeout_socket.hpp
./boost/beast/experimental/core/impl/flat_stream.ipp
./boost/beast/experimental/core/impl/timeout_service.ipp
./boost/beast/experimental/core/flat_stream.hpp
./boost/beast/experimental/core/ssl_stream.hpp
./boost/beast/experimental/core/timeout_service.hpp
./boost/beast/experimental/core/timeout_socket.hpp
- Скомпилируем boost.
./bootstrap.sh –prefix=boost_output
./b2 install
- Перенесем все скомпилированные на предыдущем шаге статические библиотеки в директорию ~/boost-libs
mv boost_1_69_0/=boost_output/lib/ boost-libs/
- Подсчитаем сколько занимает дискового пространства каждый файл в этой директории
$ find . type -f -exec du -h {} +;
Ответ на команду:
100K ./libboost_stacktrace_basic.a
2,4M ./libboost_wave.dylib
7,8M ./libboost_math_tr1.a
5,4M ./libboost_python27.a 164K ./libboost_thread.dylib 100K ./libboost_math_c99f.dylib 480K ./libboost_$
1,9M ./libboost_math_c99f.a
1,8M ./libboost_math_c99l.a
1,3M ./libboost_iostreams.a
7,3M ./libboost_program_options.a 188K ./libboost_iostreams.dylib 300K ./libboost_coroutine.a
276K ./libboost_timer.a
412K ./libboost_wserialization.dylib 940K ./libboost_contract.a
172K ./libboost_contract.dylib 892K ./libboost_numpy27.a
740K ./libboost_type_erasure.a
21M ./libboost_log_setup.a
16K ./libboost_atomic.a
208K ./libboost_random.a
104K ./libboost_prg_exec_monitor.dylib 528K ./libboost_date_time.a
648K ./libboost_graph.dylib
828K ./libboost_locale.dylib
- Найдем 10 самых тяжелых
$ find . type -f -exec du -h {} +|sort -rh | head -n 10
Ответ на команду:
28M ./libboost_wave.a
21M ./libboost_log_setup.a
20M ./libboost_log.a
16M ./libboost_test_exec_monitor.a
15M ./libboost_unit_test_framework.a
9,1M ./libboost_locale.a
8,9M ./libboost_regex.a
8,1M ./libboost_math_tr1f.a
7,8M ./libboost_math_tr1.a
7,7M ./libboost_math_tr1l.a