利用 here document 携带 c 代码
假设你想通过一段脚本调用 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。