Unix C语言入门准备(一)

 

一、gcc编译器

   1.代码的预处理、编译、汇编、连接。

   2.C程序员一般写程序会定义.c和.h两种文件。.c源文件,包含代码功能的实现。.h头文件中包含各种功能定义和声明。

   3.gcc 一般用法

   (1)gcc -E code.c  只做预处理,可以生成.i文件。

   (2)gcc -c code.c  只编译,不连接,生成.o文件。

   (3)gcc -S code.c  生成汇编文件(.s文件)。

   (4)gcc   code.c  预处理、编译、汇编、连接生成可执行文件  a.out。

   (5)gcc -oXXX     指定目标文件名——XXX。

   (6)gcc -E code.c -ocode.i  生成.i文件(不需要做预处理的源文件)。

   (7)gcc -Wall     可以显示更多的警告信息。

二、预处理

    1.C语言#include查找头文件的途径:

   (1)""会查找当前目录,若查不到,会到库文件查找,而<>不查找当前目录,直接去找库文件。

   (2)gcc -I(大写i)  指定的目录

   (3)系统目录(/usr/include等)

   (4)用环境变量(CPATH/C_INCLUDE_PATH)配置的目录

    2.#pragma  可以额外新增一些功能

     #pragma GCC dependency  文件名 

     比较更新时间,如果文件名比当前文件新,产生“警告”

     #pragma poison 名字

     这个名字将被禁用,如果代码中使用此名字,产生“错误”

     #pragma pack(正整数)

     可以设置结构体的对齐和补齐的单位。0,不做改变。1,则是1倍,2,两倍。自身长度的整数倍,超过4的以4计算。

三、静态库、动态库

   程序员可以把自己的代码打包成库文件,再提供一个头文件即可。

   库文件包括自己的代码静态库和共享库(动态库),静态库的使用方式是代码的复制,共享库的使用方式是函数指针(函数地址)。

   静态库优点是代码独立、效率稍好,缺点是代码空间太大,不利于修改和维护。

   共享库优点是代码空间较小,修改、维护比较方便,缺点是代码依赖共享库文件。

   实际工作中,共享库的使用更加广泛。

   共享库以.so结尾,静态库以.a结尾。

   1.静态库的使用步骤

     1.1生成静态库文件(.a)

       (1)写源代码(.c);

       (2)编译生成目标文件(.o);

       (3)使用 ar -r 命令生成静态库文件

           ar -r lib**.a code.o

     1.2调用静态库文件(需要lib**.a和.h文件)

       (1)写调用源代码(test.c);

       (2)编译(gcc -c test.c);[可省略,在连接时用 gcc test.c]

       (3)连接静态库文件,有三种方法:

            A:gcc test.o lib**.a    (直接连接)

            B:配置环境变量 LIBRARY_PATH,把库文件所在路径配进去,然后用

              gcc test.o -l**        (**为lib后的库文件名字)

            C:gcc test.o -l** -L库文件路径

              [l指定库文件名,L指定库文件路径]

   2.共享库的使用步骤

     2.1 生成共享库(.so)

        (1)写源代码(.c)

        (2)编译生成目标文件(.o)

            gcc -c -fpic code.c    (-fpic可以不加)

        (3)生成共享库文件(.so)

            gcc -shared code.o -olib**.so

     2.2 调用共享库

         和静态库一样。

         运行共享库程序,必须配置LD_LIBRARY_PATH。

 

[Tip]将"./a.out"-〉"a.out"

(1)vi .bashrc

(2)在最后一行添加如下字段:

    export PATH=$PATH:.

(3)退出保存。

(4)source .bashrc 即可。

下次执行a.out时,直接"a.out"就可以啦

若修改失败,导致vi,ls等其他命令无法使用,可以“cd usr/bin/vi ~/.bashrc”修正修改。

 

     

         

    [你将来的成就是由你现在的努力决定的]

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值