как указать gcc/clang выводить временные файлы в определенный каталог

При использовании параметра --save-temps для сохранения временных файлов gcc/clang выводит временный файл в том же каталоге, что и входные файлы. Есть ли возможность указать gcc для вывода файлов в какой-либо другой каталог.

OR

Если параметр --save-temps не используется, временные файлы создаются в каталоге по умолчанию (например, $TMPDIR, таком как /tmp), но они удаляются после создания объектного файла. Есть ли способ указать компилятору сохранить эти файлы, а не просто удалить их (я думаю, что единственный вариант - --save-temps, у которого есть проблема, указанная выше)


person A. K.    schedule 11.11.2012    source источник


Ответы (1)


Если вы используете -save-temps=obj, временные файлы помещаются в тот же каталог, что и выходные файлы, поэтому, например.

gcc -save-temps=obj -o dir/foo.o foo.c

создаст dir/foo.i

В мануале это прописано, очевидно. Все поддерживаемые параметры перечислены на странице https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html и ссылается на https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html для -save-temps.

person Jonathan Wakely    schedule 12.11.2012
comment
Я использую gcc версии 4.3.4. Я пытался использовать =obj, но выдает ошибку gcc: нераспознанный параметр '-save-temps=obj'. Я запустил команду gcc -c -w -save-temps=obj -ggdb -m32 test_code.c -o 32_test/test_code.o. Любая подсказка, чтобы избавиться от этой ошибки? - person RKum; 24.07.2015
comment
@RupeshKumar, до GCC 4.5.0 параметр -save-temps не принимает аргумент, поэтому либо просто используйте -save-temps, и промежуточные файлы будут в том же каталоге, что и входные файлы, либо обновите свой компилятор (4.3.4 очень старый ). - person Jonathan Wakely; 24.07.2015
comment
Спасибо Джонатан за ответ. Я не могу обновить компилятор, так как это может привести к поломке. В makefile я использовал команду mv для перемещения промежуточных файлов в нужный каталог. - person RKum; 24.07.2015
comment
На связанной странице в настоящее время вообще не упоминается -save-temps. - person Riot; 20.09.2016
comment
@Riot, спасибо, он переместился на другую страницу. Вы все еще можете найти его через список всех опций. - person Jonathan Wakely; 20.09.2016