linux常用知识点小记

1、linux中使用 -I来指定头文件所在的路径;

2、可以在某个目录下查找:例如在/usr/include 目录下查找EXIT_结尾的宏定义,可以用grep EXIT_ *.h

3、在linux中库是预先编译好的一组函数的集合,他们是按照可重用的原则编写的。在linux中标准库文件一般存储在/usr/lib和/lib目录下面。linux中库的名字是有一定的规则的:以lib开始,后面表示的具体什么库,比如(c表示c语言库,m表示数学库);.a结尾的是静态库,.so结尾的是动态库。在编译c文件的时候 如果需要用到数学库,可以在编译的时候 -lm,这就表示使用标准库目录中的libm.a, 使用-lm的这样的好处是当有共享库的时候,会优先选择共享库。如果需要指定搜索的库的路径,可以使用-L来指定。

4、在未写main函数之前如果想要验证语法的正确性,可以使用gcc -c text.c 进行编译;

5、在linux中编译静态库:

      假如:我们创建add.c和dec.c这两个函数实现的功能分别是求和和做差的功能:

在add.c文件中
#include <stdio.h>
int add(int a,int b)
{
    return (a+b);
}
在dec.c文件中
#include <stdio.h>
int dec(int a,int b)
{
    return (a-b);
}

然后gcc -c add.c dec.c 编译成功,会生成对应的.o文件;

现在我们可以编写main函数验证这个库是可以使用的:

在main.c中:
#include <stdio.h>
#include <stdlib.h>
#include "lib.h"   //这个头文件中声明int add(int,int)和int dec(int,int)函数的


int main(int argc,char *argv[])
{
    printf("add=%d.\n",add(3,4));

    return 0;
}

gcc -o app main.c add.o dec.o 编译成功,运行./app可以输出7,说明这个库是正确的;

现在我们生成静态库:(使用ar工具)

ar crv libfoo.a add.o dec.o

a - add.o
a - dec.o
-c 如果存档文件不存在,则创建,并不显示ar发出的警告;-r  向存档文件中插入.o文件,替换已有的任何同名文件,新成员添加到文档末尾;-v表示详细显示程序执行的信息。

然后我们可以gcc -o app main.c libfoo.a;

如果使用gcc -o app main.c -lfoo 需要用-L来指定搜索的静态的当前路径:即:gcc -o app main.c -L. -lfoo才可以,因为默认是到标准库目录中去找库文件的。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

当多个函数都使用静态库时,就会出现一个函数的多个副本;因此共享库是为了解决这个问题,简单的理解就是只有当程序呗加载到内存中运行时,才会调用到共享库,程序不运行时,是不会加载动态库的。

---------------------------------------------------------------------------------------------------------------------------------------------------------------

$#:表示传递给脚本的参数的个数;

$$:表示脚本的进程号

$0:表示脚本的名字

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值