linux下静态库、动态库的编译和使用

1、CC 、cc 、gcc 、g++ 的区别: 

      CC 是Unix下老的商用c语言编译器,或者是Makefile中指向gcc的一个内建变量;

      cc 在linux下是gcc的一个符号链接;

      gcc (GNU Compiler Collection)多种语言编译器的集合,很强大,一般用来编译链接C/C++语言;

      g++ C++语言编译链接器,编译期间实际调用的是gcc,待日后慢慢熟悉;

 

2、生成可执行文件:

      $ gcc -o main main.c a.c b.c   由源文件main.c经过编译-->汇编-->链接 生成可执行文件main

      $ ./main                                 执行!

 

3、生成静态库:

      $ gcc -c a.c b.c                        由源文件a.c编译生成a.o目标文件

      $ ar cr libtest.a a.o b.o           由刚才生成的目标文件生成静态库文件libtest.a

      $ gcc -o main main.c -L.-llibtest

            编译链接生成可执行文件main,-L制定静态库的搜索路径,-l制定链接库的名字

      $ ./main                                  执行!

 

4、生成动态库

      $ gcc -c -fPIC a.c  b.c                                  生成PIC(Position-Independent-Code)目标文件

      $ gcc -shared -fPIC -o libtest.so a.o b.o     生成共享库libtest.so

      $ gcc -o main main.c -L. -ltest                     生成可执行文件

      $ export LD_LIBRARY_PATH=$PWD            设置共享库搜索路径

      $ ./main                                                      执行!

 

5. 生成内核模块

...

你可能感兴趣的:(linux)