fabiensanglard / dc

Driving Compilers
Apache License 2.0
30 stars 15 forks source link

driver.php suggestions #12

Open MaskRay opened 1 year ago

MaskRay commented 1 year ago

clang -v -lm -std=c89 hello.c

Consider the more conventional order: clang -v -std=c89 hello.c -lm

(For libm.so, it's fine to keep -lm anywhere, but for static linking, libm.a needs to be placed the last to appease GNU ld, gold, and ld.lld --warn-backrefs)

$ clang -v -Wl,foo,bar hello.c clang -cc1 -o hello.o hello.c ld -o a.out hello.o foo bar

ld will receive foo bar hello.o since the positions of linker options and input files matter.

Driving a multi-file project $ clang -v hello.c foo.c bar.c clang -cc1 hello.c -o hello.o // Compile

Make the cc1 action -emit-obj explicit here and throughout (including other articles like cc.php)? clang -cc1 -emit-obj hello.c -o hello.o

The default action is -fsyntax-only and -emit-obj is an important detail to keep.

$ clang foo.h -o foo.gch $ file foo.gch GCC precompiled header (version 013) for C

Use gcc -c foo.h -o foo.gch?

fabiensanglard commented 1 year ago

Issue1: Ok, feel free to send a PR. Issue2: (-emit-obj) I find it confusing. We already have -cc1 and -o to output an object. I don't think we need to make it more explicit. Issue3: Not sure what you are referring to. Please specify the .php location/