【问题标题】:how to instruct gcc/clang to output temporary files to a particular directory如何指示 gcc/clang 将临时文件输出到特定目录
【发布时间】:2012-10-31 10:21:05
【问题描述】:

使用 --save-temps 选项保存临时文件时,gcc/clang 将临时文件输出到与输入文件相同的目录中。是否有一个选项可以指示 gcc 将文件输出到其他目录。

当不使用 --save-temps 选项时,临时文件会在默认目录中创建(即 $TMPDIR,例如 /tmp),但一旦创建目标文件,它们就会被删除。有没有办法指示编译器保留这些文件而不是仅仅删除它们(我认为唯一的选择是 --save-temps,它有上述问题)

【问题讨论】:

    标签: gcc command-line g++ clang clang++


    【解决方案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

    【讨论】:

    • 我使用的是 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”。有什么提示可以摆脱这个错误?
    • @RupeshKumar,在 GCC 4.5.0 之前,-save-temps 选项不接受参数,所以要么只使用-save-temps,中间文件将与输入文件位于同一目录中,或者升级你的编译器(4.3.4 已经很老了)。
    • 感谢乔纳森的回复。我无法升级编译器,因为它可能会破坏事情。在 makefile 中,我使用 mv 命令将中间文件移动到所需目录。
    • 链接页面目前没有提及-save-temps
    • @Riot,谢谢,它移到了另一个页面。您仍然可以通过所有选项列表找到它。
    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2015-05-07
    • 2015-07-07
    • 2013-11-25
    • 1970-01-01
    相关资源
    最近更新 更多