Полезности
Это просто список ссылок и полезных команд. Кроссплатформенная разработка требует использования разных инструментов и понимания принципов их работы. Однако, вспомнить, что тебе нужно для конкретной платформы у меня сходу не получается, потому я решил собрать редкоиспользуемые утилиты полезные лично для меня.
Про проблемы очереди линковки
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
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
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 rebase --onto topicA~5 topicA~3 topicA
Дампим 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)
Не забыть собрать с отладочными символами
-Werror
Или конкретный ворнинг:
-Werror=<warning>
Выключить ошибки для данного ворнинга:
-Wno-error=<warning>
Включить ворнинг:
-W<warning>
Выключить:
-Wno-<warning>
https://clang.llvm.org/docs/DiagnosticsReference.html
И это еще не все! Можно управлять диагностикой через директивы компилятора:
https://nshipster.com/clang-diagnostics/
Ссылки
Очень подробно и доходчиво про процесс сборки и линковки - 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
Удалить коммиты из истории
E---F---G---H---I---J topicA
git rebase --onto topicA~5 topicA~3 topicA
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/
Комментарии
Отправить комментарий