how to compile c code example

Example 1: how to compile c code to a .so

gcc -shared -o libhello.so -fPIC hello.c

Example 2: how do i make my own c compiler

To make your own c compiler:
	* First start with the lexer/tokenizer, it should turn code to tokens like this:
	int main(){return 2;} => INT, SPACE_SEPARATOR, {IDENTIFIER, "main"}, OPENING_BRACE, RETURN_KEYWORD, {LITERAL, "2"}, CLOSING_BRACE
	to do this make a list of tokens and translate code to tokens (i wrote all c tokens for my own c compiler)
	* Second make a Parser:
	it will turn tokens to an AST tree
    you will use it to compile,
    it ressembles this:
    	main.cpp << not important
        	|
            main_entry: {name: "main", type: "function", return_type: "int"}
        	|
           /
		  {return, type: "keyword"}
		   |
		return value: {literal: "2", type: "int"}
	* And third make an x86 code writer
    it should translate the tree to x86
	the result for our code in x86 is:
	    .globl _main
        _main:
            movl    $2 %eax
            ret
PS: i am not giving code so you can write your c compiler in any language, and also make you actually feel like you wrote it yourself instead of copy pasting