gcc、g++

工作流程:

源代码(.h  .cpp  .c)通过预处理器得到预处理后源代码(.i)通过编译器得到汇编代码(.s)通过汇编器得到目标代码(.o)后与启动代码,库代码,其他目标代码通过连接器得到可执行程序(.exe  .out)

gcc、g++常用参数

g++ test.cpp -E -o test.i // 对test.cpp进行预处理得到预处理后源代码test.i
g++ test.i -S -o test.s   // 对test.i进行编译得到汇编代码test.s
g++ test.cpp -c -o test.o // 对test.cpp进行编译、汇编得到目标代码test.o

静态库、动态库

静态库:
    命名规则:
        Linux:libxxx.a
            lib:前缀(固定)
            xxx:库的名字
            .a:后缀(固定)
        Windows:libxxx.lib
    制作:
        1、gcc 获得.o文件
        2、将.o文件打包,使用ar工具(archive)
            ar rcs libxxx.a xxx.o xxx.o
                r-将文件插入到备份文件中
                c-建立备份文件
                s-索引
    calc文件夹:
        1、gcc -c add.cpp div.cpp mut.cpp sub.cpp //生成.o文件
        2、ar rcs libcalc.a add.o div.o mut.o sub.o //生成libcalc.a静态库
        3、g++ main.cpp -o app -I ./include -l calc -L ./lib // -I指定include搜索路径 -l指定使用库 -L指定搜索库的路径


动态库:
    命名规则
        Linux:libxxx.so
            lib:前缀(固定)
            xxx:库的名字
            .so:后缀(固定)
            在linux下是一个可执行文件
        Windows:libxxx.dll
    制作:
        gcc得到.o文件,得到和位置无关的代码
            gcc -c -fpic/-fPIC a.c b.c
        gcc得到动态库
            gcc -shared a.o b.o -o libcalc.so
    配置动态库路径
        1、配置环境变量(终端关闭就需要重新配置)
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/carrot/linux/lesson04/library_so/lib
        2、在home目录下.bashrc文件末尾添加环境变量(用户级配置)
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/carrot/linux/lesson04/library_so/lib
        3、在/etc/profile文件末尾添加环境变量(系统级配置)
            export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/carrot/linux/lesson04/library_so/lib
        
        4、配置/etc/ld.so.cache
            在/etc/ld.so.conf末尾添加/home/carrot/linux/lesson04/library_so/lib
            使用sudo ldconfig跟新

ppt

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值