假设您prog.c
包含lib.h
,其功能在lib.c
中定义,您使用gcc -O3 lib.c prog.c
构建程序。
GCC在编译之前是否合并了两个源文件?
GCC是否能够将lib.c
的短函数内联到生成的二进制文件中?
这就是诀窍:gcc -flto -O3 lib.c prog.c
。
两个源文件仍然是单独编译的,但链接器能够将函数从一个文件内联到另一个文件中。
答案 0 :(得分:1)
GCC在编译之前是否合并了两个源文件?
不,它没有
GCC是否能够将lib.c的短函数内联到生成的二进制文件中?
是的,在高级优化级别。查看整个程序优化,链接时间优化和类似选项