how to use gcc to compile c file?
- pre-process: define, inline function etc.
gcc -E main.c -o main.i
-D MAX=1 宏MAX为1
-U DEBUG 取消定义宏DEBUG
- compile: get assembly language file
gcc -S main.i -o main.s
- assemble汇编:把助记符(Memoni)换成操作码,把地址符号(Symbol)或标号(Label)换成地址码,得到目标文件
gcc -c main.s -o main.o
- link:会检查出引用等错误
gcc main.o -o main 可执行文件
- lib:标准库的大部分函数通常放在文件 libc.a 中(文件名后缀.a代表“achieve”,译为“获取”),或者放在用于共享的动态链接文件 libc.so 中(文件名后缀.so代表“share object”,译为“共享对象”)。这些链接库一般位于 /lib/ 或 /usr/lib/,或者位于 GCC 默认搜索的其他目录。
gcc main.c -o main.out -lm
#则会搜索/usr/lib下等libm.so 或 libm.dylib
- 如果想链接其他目录下等库
gcc main.c -o main.out /usr/lib/libm.a
#指明具体的文件
gcc main.c -o main.out -L/usr/lib:/usr/local/lib -lm
#或者-L可能的目录
makefile
为了节省时间,可以使用 make 控制创建过程,由它调用编译器重新编译,而且只编译比对应的最新源文件旧的那些目标文件。
cmake
cmake -D CMAKE_INSTALL_PREFIX=~/
cmake则兼容了不同平台