Сделайте этот скрипт, special-gcc
. Сделайте его исполняемым, chmod 777 special-gcc
. Сценарий использует exec
для замены процесса вызовом gcc
, в отличие от порождения дочернего процесса. Аргументы $@
, хранятся в массиве, фильтруются в l oop, затем передаются в вызов gcc
.
#!/bin/bash
declare -a args=()
#!/bin/bash
echo -- "----------------" >> ~/gcc-wrapper-log
for arg in "$@"
do
if ! [[ "$arg" == '-m32' ]]; then
echo -- "$arg" >> ~/gcc-wrapper-log
args+=("$arg")
fi
done
exec mips-linux-gnu-gcc -static "${args[@]}"
Внутри gdb
, выполните команду set compile-gcc /path/to/special-gcc
. Попробуйте выполнить некоторую команду compile code <anything>
. Тогда в gcc-wrapper-log
вы можете увидеть все аргументы для компиляции, можете выборочно отключить их в скрипте.
Для меня компиляция прошла успешно, но поскольку я использую кросс-компилятор mips-linux-gnu-gcc
, * Кажется, 1017 * неправильно связывает полученный файл .o
. См. документы для получения подробной информации о внутренних функциях compile code
. Где-то на этапах «Перемещение объектного файла» у меня произошел сбой процесса для mips-linux-gnu-gcc
.
Однако это все еще чистый и простой способ точно контролировать аргументы компиляции, используемые gdb compile code
.