Полезности

Это просто список ссылок и полезных команд. Кроссплатформенная разработка требует использования разных инструментов и понимания принципов их работы. Однако, вспомнить, что тебе нужно для конкретной платформы у меня сходу не получается, потому я решил собрать редкоиспользуемые утилиты полезные лично для меня.


Ссылки

Очень подробно и доходчиво про процесс сборки и линковки - https://people.cs.pitt.edu/~xianeizhang/notes/Linking.html
Про проблемы очереди линковки
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
На рабочем проекте я 3 дня бился с проблемой линковки. Были предложения что проблема из-за длинны путей к объектным файлам, было предположение, что библиотеки слишком большие. Однако, на практике оказалось, что перед финальной линковкой, объектники паковались в 4 библиотеки, в следствии чего, порядок передачи этих библиотек на линковку становился важным. Проблема решилась после объединения всех файлов в одну либу.
Дополнительный дебаг в рантайме Clang
https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html

Онлайн компиляторы:
https://arnemertz.github.io/online-compilers/

Многопользовательский редактор кода с подсветкой:
http://collabedit.com/

Chromium embedded framework
https://bitbucket.org/chromiumembedded/cef/wiki/Tutorial

Команды

Mac:
otool -L  Используемые библиотеки http://www.manpagez.com/man/1/otool/

Unix:
ar - Манипцляции со статической библиотекой (архивом объектников) http://www.manpagez.com/man/1/ar/

cmake --trace-expand - Можно посмотреть выполнения CMake скрипта по шагам. Полезно для крупных проектов и не только.

Ускорение клонирования из репозитория с lfs
git-lfs install --system --skip-smudge
git-lfs pull

Удалить коммиты из истории
E---F---G---H---I---J topicA

git rebase --onto topicA~5 topicA~3 topicA

E---H'---I'---J' topicA

https://git-scm.com/docs/git-rebase

SUDO для Винды
runas /profile /user:CORP\hpa.<Имя> “<Команда>”

Дампим AST
clang -Xclang -ast-dump
-Xclang - значит передать аргумент компилятору, аналогично -Xlink для линкера

apt-cache show <full-name> Информация о пакетах с именем
apt-cache search <name> Найти пакеты с именем
dpkg --status <package> Статус установленного пакета с именем

git apply <patch file> - Применить патч https://git-scm.com/docs/git-apply

git clean -dfx - Удалить все unstaged файлы включая перечисленные в gitignore (опция -x)

Дожидаться подключения отладчика

#include <csignals>
...
raise(SIGSTOP);

Не забыть собрать с отладочными символами

Warnings C++

Чтоб интерпретировать все ворнинги как ошибки:
-Werror
Или конкретный ворнинг:
-Werror=<warning>
Выключить ошибки для данного ворнинга:
-Wno-error=<warning>
Включить ворнинг:
-W<warning>
Выключить:
-Wno-<warning>

https://clang.llvm.org/docs/DiagnosticsReference.html

И это еще не все! Можно управлять диагностикой через директивы компилятора:
https://nshipster.com/clang-diagnostics/

Комментарии

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk