【编译|链接】
1) 编译:将源程序转换为可执行的二进制代码(【目标文件】)。
Windows:
xxx.c ==> xxx.obj | xxx.dll | xxx.lib
Linux:
xxx.c ==> xxx.o
2) 链接:将程序中调用的【函数库】的【目标代码】与程序的【目标文件】整合。
Gcc Tool
功能:
预编译、编译、链接。
参数:
-c 只编译不链接。输出“.o“文件。
-S 原代码转化为汇编。输出“.s“文件。
-o 链接。输出可执行文件。
-O 根据【硬件平台】的特性进行优化。O3/O2/O1三种级别的优化。
-g 产生gdb所必需的符号信息。
-I DirName 【头文件搜索目录】中加入DirName目录。
-L DirName 【函数库搜索目录】中加入DirName目录。即搜寻".a"库文件。
-l name 【-L 选项指定目录 | 系统预设目录】下加载“libname.a”的函数库。
过程:
编译:gcc -c -O -I DirName xxx.c
链接:gcc -L DirName -lxxx xxx.o -o xxx
动态链接库:
编译:gcc -fPIC -c xxx.c
-fPIC 通知gcc产生可以重定位的目标代码。
链接:gcc xxx.o -shared -o libxxx.so
使用:
1) export LD_LIBRARY_PATH=/sharedlib/path/...
2) dlopen + dlsym + dlclose