zoukankan      html  css  js  c++  java
  • [Linux] linux下生成静态库和动态库

    静态库

    1. 静态库对函数库的链接是在编译时期完成的

    2. 程序在运行时与函数库再无瓜葛,移植方便

    3. 浪费空间和资源,因为所有相关的目标文件都与牵连的函数库被链接成一个可执行文件

    4. 静态库对程序的更新部署和发布都带来麻烦。

    动态库

    1. 动态库把对一些函数的链接载入推迟到程序运行的时期

    2. 可以实现进程间的资源共享

    3. 将一些程序升级变得简单

    4. 做到链接载入完全由程序员在程序代码中控制

    g++使用

    用g++编译hello world

    1. 编写hello world代码

    2. 使用g++命令编译生成可执行文件hello.out

    3. g++命令规则

    预编译 g++ -E hello.cpp -o hello.i
    编译    g++ -S hello.cpp -o hello.s
    汇编    g++ -c hello.cpp -o hello.o

    命令详解

    1. 预编译 g++ -E hello.cpp -o hello.i

    将#include <iostream>展开,截取了最后一屏的显示

    2. 编译 g++ -s hello.cpp -o hello.s  截取最后一屏的显示

    3. 汇编,生成对象文件 g++ -c hello.cpp -o hello.c 显示二进制文件

    4. 链接,编写三个文件add.h add.cpp main.cpp

    编译运行 g++ add.h add.cpp main.cpp -o main.out

    静态库与动态库生成

    静态库:linux: *.a  windows: *.lib

    动态库:linux: *.so  windows: *.dll

    静态库的创建和使用

    静态库是一些目标文件的集合体

    使用ar创建一个静态库文件

    1. 编译add.cpp文件生成add.o文件 g++ -c add.cpp

    2. 使用ar从.o文件中创建.a文件  ar -r libadd.a add.o

    3. 使用.a文件 g++ main.cpp -L. -ladd -o main

    动态库创建和使用

    1. 生成.so文件 g++ -shared -fPIC add.cpp -o libmyadd.so

    2. 使用.so文件链接main g++ main.cpp -L. -lmyadd -o main.out

    3. 添加路径并运行main.out  LD_LIBRARY_PATH=. ./main.out

  • 相关阅读:
    HTML 转 PDF 之 wkhtmltopdf 工具精讲
    oracle学习之数据库数据保存成文件
    字体单位大小对照换算表(字号、磅、英寸、像素)
    mui 注意事项
    hbuilder header消失
    C# salt+hash 加密
    判断二个文件是否相同
    html转pdf
    Oracle中Clob类型处理解析:ORA-01461:仅可以插入LONG列的LONG值赋值
    【Django】Django 直接执行原始SQL 如何防止SQL注入 ?
  • 原文地址:https://www.cnblogs.com/immjc/p/9128773.html
Copyright © 2011-2022 走看看