compiling and linking