【发布时间】:2015-09-08 08:12:49
【问题描述】:
cmake 先将 .c 文件编译成 .o 文件,然后将它们链接在一起:
gcc a.c -o a.c.o
gcc b.c -o b.c.o
gcc c.c -o c.c.o
gcc a.c.o b.c.o c.c.o -o a.out
而不是直接从源文件编译成二进制:
gcc a.c b.c c.c -o a.out
通常我会使用链接时间优化 (-flto) 来允许编译器进行跨二进制优化,但不幸的是,我必须使用不支持链接时间优化的旧编译器。
也就是说,如果我使用 cmake,我的二进制文件比我直接从源文件编译成二进制文件大 3 倍,因为缺乏跨二进制优化
你知道让 cmake 直接从源文件编译成二进制文件的方法吗,或者你知道解决这个问题的另一种方法吗?
【问题讨论】: