1.编译c/cpp文件过程
(1)预编译:处理c/cpp文件里: #include<stdio.h>、宏定义(后面自动加 ; 号)
gcc -E hello.c -o hello.i
(2)编译:检查语法词法错误,可查看 .s文件
gcc -S hello.i -o hello.s
(3)汇编阶段:可查看汇报语言 .o文件
gcc -c hello.s -o hello.o
(4)链接阶段:生产可执行二进制文件
gcc hello.o -o hello
(5)也可以一步完成:生成 ./a.out 文件
gcc hello.c
gcc main.c -o main
2.文件说明
(1) .out 文件 gcc xxx.c 文件默认生成 a.out 文件执行 ./a.out
gcc main.c
(2).o 文件:生成的目标文件
gcc -c lzio.c
(3).a 文件:由很多 .o 文件组成的静态文件
ar -r ttt.a test_call_lua.o xxx.o
(4).so文件:动态文件
gcc -c mylualib.c ;
gcc -O2 -bundle -undefined dynamic_lookup -o mylualib.so mylualib.o
3.mac编译连接c/c++
(1) -pedantic 选项: 使用扩展语法的地方将产生相应的警告信息
(2) -Wall 选项: 要求 GCC将产生尽可能多的警告信息
(3) -Werror选项:要求 GCC将所有的警告当成错误进行处理
(4) Linux下头文件和库文件默认目录
头文件 (.h): /usr/include/目录
库文件 (.so, .a): /usr/lib/目录
(5) -I(i) 选项:添加新的搜索目录,
gcc -o hello hello.c -I /usr/dess/include
在此目录下找头文件
(6) -L选项:添加新的搜索目录,主要是 .so文件,libfoo.so == lfoo
gcc -o test test.c -L /home/crosstar/lib –lfoo
(7) -static 选项: 强制使用静态链接库 libfoo.a = lfoo
gcc -o test test.c -L /home/crosstar/lib -static –lfoo 或
gcc -o test test.c -L /home/crosstar –lfoo
库文件命名规则 libxxx如libfoo.a 所以libfoo.so|libfoo.a == lfoo