I googled and found this as the shortest possible. As, the source file is only 1 byte !

Steps :
(1) Create a new empty file named : "void main(){puts(Hello, World!);}c.c"
(2) Open the file with any text editor and write only one char "A" to the file and save it.
##That's our program Only 1 char content !
(3) To compile it, use gcc with flags "-DA=__FILE__ -Dc=// -istdio.h void*.c".

Not sure if it works. I'll test and post.