gcc编译器的使用
- 一个 C/C++文件要经过预处理(preprocessing)、编译(compilation)、汇
编(assembly)和链接(linking)等 4 步才能变成可执行文件。 - 编译过程为:
gcc使用实例:
gcc hello.c // 输出一个名为 a.out 的可执行程序,然后可以执行./a.out
gcc -o hello hello.c // 输出名为 hello 的可执行程序,然后可以执行./hello
gcc -c -o hello.o hello.c // 先编译(不链接)
gcc -o hello hello.o // 再链接
- 执行
gcc -o hello hello.c -v
的全部过程,上面有图
gcc -E -o hello.i hello.c //预处理 hello.c 成 hello.i 文件
gcc -S -o hello.s hello.i //编译 hello.i 成 hello.s 文件
gcc -c -o hello.o hello.s //汇编 hello.s 成 hello.o 文件
gcc -o hello hello.o //把汇编好的 .o文件链接可执行文件 hello
制作静态库( .a 后缀)
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
ar crs libsub.a sub.o sub2.o sub3.o(可以使用多个.o 生成静态库)
gcc -o test main.o libsub.a (如果.a 不在当前目录下,需要指定它的绝对或相对路径)
//运行:
./test
制作动态库( .so 后缀) :注意链接和运行是两个不同的概念
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -shared -o libsub.so sub.o sub2.o sub3.o(可以使用多个.o 生成动态库)
//链接
//第一种: gcc -o test main.o libsub.so
//第二种:
gcc -o test main.o -lsub -L /libsub.so/所在目录/
//解析:-l 指定库文件的名称sub(libsub.so)----->省略了lib和.so
// -L 库文件(libsub.so)所在的路径
//运行:
//第一种:运行时libsub.so库需要放在系统默认的环境变量里面去(lib...)
//第二种:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./(当前库路径)
//然后就可运行test了
- 如果要编译很多个文件,这时就需要用到Makefile的使用了