linux用gcc编译器,linux环境下 gcc 编译器的简单使用

gcc 编译器:

1.gcc 编译的四个阶段:预处理,编译,汇编,链接;

2.gcc 支持的后缀名:

.C /.cc / ./cpp   C++源程序;

.m                    Objective-C原始程序;

.i                       经过预处理的C原始程序;

.ii                      经过预处理的C++原始程序;

.s  /.S                汇编语言源程序;

.o                      目标文件;

.a/.so                 编译后的库文件;

3、gcc -Wall  文件名,   编译时尽可能的提供警告;

4、 gcc -O2  文件名,    编译时尽可能进行优化,产生尽可能小的和执行尽可能快的代码;

5、静态库: 在编译时,直接将库函数的代码加到可执行文件中,在以后执行过程中,不在依赖该库文件;

命名方式:lib + 库名+.a  (如: libstd.a)

动态库 和动态加载库: 在编译时不用加入代码,在运行时装载和卸载;

命名方式:lib + 库名 + .so + .版本号 (如libc.a.so.9)

6、创建静态库:

gcc -c  c文件1  c文件2(生成.o文件)

ar -cr 库名称 目标文件1 目标文件2(.o文件)

7、静态库的使用:

gcc -o 生成名称 c文件  -l库命名(如lm 表示连接的库为libm.a 或者libm.so;)  -L/路径

由于静态库不能先于源程序连接,所以连接库(-l库名称) 都卸载最后;

8、创建共享库:

gcc -c -fPIC test.c

gcc -c -fPIC text2.c

gcc -shared -fPIC -o libtest.so test.o test2.o

9、/lib : 系统必备共享函数库;

/usr/lib: 标准共享函数库和静态函数库;

/usr/local/lib: 本地函数库;

10、在更新了共享库之后,要使用ldconfig命令,告知系统;

11、ldd      用于查看库函数之间的依赖性;

12、在程序中使用指针(空类型) = dlopen(“路径”,连接方式(flag))调用连接库,使用完后使用dlclose(指针)关闭该库;该函数在头文件中;

13、gcc -c 1.c 2.c 存在的意义:

如果要编译的文件非常多,但是在编译完成之后修改了某个文件,那么只需在将整个文件再重新编译成.o文件,然后再连接一下就可以了,这个就节省了大量的时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值