gcc

来源:互联网 发布:win7时间校准软件 编辑:程序博客网 时间:2024/06/01 12:23
GNU Compiler Collection的缩写
GCC的C编译器是gcc,其命令格式为:
gcc [options] file...

编译示例:
$gcc hello.c
$gcc –o test hello.c

选项-o可以使编译程序生成指定文件名


-c选项用于生成目标文件,示例:
$gcc –c hello.c


编译多个文件,示例:
$gcc –c file1.c file2.c file3.c

多文件编译

1.源文件string.c
2.源文件main.c
3.编译运行
$gcc -o test string.c main.c

预处理

预处理过程将源文件中的头文件包含进源文件中,并且将文件中定义的宏进行扩展


选项-E告诉编译器进行预编译操作,示例:
$gcc –E string.c

生成汇编

选项-S生成汇编语言,示例:
$gcc –S string.c

静态链接库和动态链接库

静态库是obj文件的一个集合。
静态库以.a为后缀
由ar生成
语法:
ar  库文件 obj文件1  obj文件2
示例:
将string.o打包为库文件libstr.a的命令为
$ar –rcs libstr.a string.o

使用静态链接库

示例:
$gcc –o test main.c libstr.a

动态链接库

动态链接库是程序运行时加载的库
别名:lib+库名+.so
真名:别名+小版本号+发行版本
链接名:链接时使用
1.生成动态链接库

-fPIC选项或者-fpic选项
示例:
$gcc –shared –Wl,-soname,libstr.so –o libstr.so.1 string.c


2.动态链接库的配置

指定系统的动态链接库搜索的路径
配置文件/etc/ld.so.conf


3.动态链接库管理命令



4.使用动态链接库

使用方式:-l库名
示例:
$gcc –o test main.c –L./ -lstr

动态加载库

1.打开动态库dlopen()

函数dlopen()按照用户指定的方式打开动态链接库
void * dlopen(const char *filename, int flag);


2.获得函数指针dlsym()

函数dlsym()可以获得动态链接库中指定函数的指针
void * dlsym(void *handle, char *symbol);


3.使用动态加载库的一个例子
$gcc –o testdl main.c libstr.so –ldl



环境搭建

判断是否安装:

$which gcc


安装gcc
$apt-get install gcc





原创粉丝点击