Re: How to get the preprocessor output as part of the compilation process?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Valdis. It wasn't me who asked the question, so I can't comment on the Frank's goal.

And in fact, what you may want to do is have your script invoke gcc twice, once with -E, and then a second time with -c, ...

Certainly. That is exactly what I have proposed. Nothing wrong with this.

Regards, Konstantin

Valdis Klētnieks, 10 Dec 2019 06:17 MSK:

And in fact, what you may want to do is have your script invoke gcc twice, once with -E, and then a second time with -c, because otherwise the build will die the first time it tries to link together two or more non-existent .o files.

Using 'make -k' might also work, but will leave the build log output littered with a lot of error messages.

Or explain why you're doing this - there may be a simpler way to achieve your goal. For instance, if you're trying to build a cross-reference of what .c files include what .h directly or indirectly, there's already specialized tools for doing that sort of thing, such as 'cxref'.

Konstantin Andreev, 09 Dec 2019 13:10 MSK:

The universal approach that always works in this and many similar cases is just to replace the instrumented binary by your interception shell script.

E.g. rename gcc to gcc.hide (generally, moving into another location may not work) and setup 'gcc' script that does what you want: replaces `-c' with the `-E', replaces `-o' argument, etc ..., calls gcc.hide to preprocess source then calls gcc.hide with original non-modified command line.

This is cumbersome process, you can break some things, ...

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

  Powered by Linux