假设你想通过一段脚本调用 make 来编译代码,并且在脚本中将一些编译需要的系统信息传递给 makefile,可以通过 bash 的 here document 来实现。例如:

tmp_src_filename=fdfs_check_bits.c  
cat <<EOF > $tmp_src_filename  
#include <stdio.h>  
#include <unistd.h>  
#include <fcntl.h>  
int main()  
{  
        printf("%d\n", (int)sizeof(long));  
        printf("%d\n", (int)sizeof(off_t));  
        return 0;  
}  
EOF  
  
gcc -D_FILE_OFFSET_BITS=64 -o a.out $tmp_src_filename  
output=$(./a.out)  

上面的代码摘自 FastDFS 的 make.sh。