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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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。