一、Linux上编译静态库

# 1.编译成.o文件
gcc -c a.c b.c // 2.编译成静态库
ar -r liba.a a.o b.o // 3.链接成可执行文件
gcc main.c -o main -L[库所在路径] -l[库名]
g++ main.cpp -o main -L./ -la

二、Linux上编译动态库

// 1.把cpp封装成so库
g++ -fPIC -shared -o libxx.so xxx.cpp
g++ -fPIC -shared -o libtest.so test.cpp // 2.编译
g++ main.cpp -o main -L[库路径] -l[库名]
g++ main.cpp -o main -L./ -ltest

其他程序调用so库,编译时报错,找不到so库解决方法:

方法一:

  把生成的so库拷贝到 /usr/lib 或者 /usr/lib64 文件夹中

方法二:

  设置临时环境

LD_LIBRARY_PATH=./
export LD_LIBRARY_PATH

Linux编译静态库、动态库的更多相关文章

  1. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

    目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...

  2. linux静态与动态库创建及使用实例

    一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...

  3. Linux 静态库&动态库调用

    1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不 ...

  4. gcc编译工具生成动态库和静态库之一----介绍

     1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. ...

  5. Linux中创建和使用静态库&动态库

    库本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行 Linux下库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在 ...

  6. MinGW、Linux GNU、MSVC编译和链接动态库的分析

    这几天研究CMake跨平台项目嘛,用了以下几种编译器: VS2019(MSVC) Linux GNU MinGW 编译之后发现链接动态库发现以下问题: VS2019中如果直接链接CMakeLists. ...

  7. C++开发新版本vs使用旧版本vs编译的静态库动态库

    关于vs潜在的升级问题概述 (Visual C++)查看官网的介绍:潜在的升级问题概述 (Visual C++).主要问题: 1. 如果使用 /GL(全程序优化)进行编译,则生成的对象文件只能使用生成 ...

  8. 静态库动态库的编译、链接, binutils工具集, 代码段\数据段\bss段解释

    #1. 如何使用静态库 制作静态库 (1)gcc *.c -c -I../include得到o文件 (2) ar rcs libMyTest.a *.o 将所有.o文件打包为静态库,r将文件插入静态库 ...

  9. 生成lua的静态库.动态库.lua.exe和luac.exe

    前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across me ...

  10. 修改OpenSSL默认编译出的动态库文件名称

    在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中 ...

随机推荐

  1. 骚操作之 持有 ReadOnlySpan 数据

    ReadOnlySpan<T> 可以说现在高性能操作的重要基石 其原理有兴趣的同学可以看 2018 的介绍Span<T>文章 其为了保障大家安全使用做了相应的限制 那么有没方法 ...

  2. 【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能

    问题描述 Azure Event Hub支持 kafka,所以为了测试消息生产者所在环境与Azure Event  Hub之间发送消息的性能如何,特别使用 kafka 官方测试生产者,消费者的性能工具 ...

  3. Jmeter 之 forEach控制器

    1 添加方法: 线程组右键-> 添加 -> 逻辑控制器 ->ForEach控制器   2 作用: 可以更方便JMeter后置处理器提取出来的多组数据,也可以定义具有特定规则的数据,用 ...

  4. 7、mysql的缓存优化

    概述 开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存. 操作流程 客户端发送一条查询给服务 ...

  5. Redis队列优先级的实现方案

    场景 通常使用 list 来实现队列操作,所有的任务统一都是先进先出的原则,如果想优先处理某个任务就不太合适,这个时候就需要让队列有优先级的概念,实现方式有以下两种方式: 单一列表实现 队列正常的操作 ...

  6. 学习笔记-涛讲F#(中级)

    目录 适配器模式 责任链模式 命令模式 策略模式 工厂模式 单例模式 其它内容 这一系列的视频主要讲了F#设计模式的实现,没有太多其它内容,笔记内容主要是转载Snippets tagged desig ...

  7. day16--Java常用类04

    Java常用类 4.字符串相关类练习 4.1StringBuilder练习 package li.normalclass.stringbuilder; public class TestBuffer ...

  8. 关于easyExcel导出文字合并居中和服务器导出失败踩了一天的坑

    参考:https://blog.csdn.net/hanyi_/article/details/118117484,https://blog.csdn.net/sunyuhua_keyboard/ar ...

  9. [bzoj2120]数颜色/维护队列 (分块)

    数颜色/维护队列 [做题笔记] 此生第一道不贺题解\(AC\)的分块蓝题!!! 题目描述 墨墨@hs_mo购买了一套 \(N\) 支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨 ...

  10. Ubuntu如何进救援模式

    linux的救援模式-1 详解在 Ubuntu 中引导到救援模式或紧急模式 这篇教程将介绍如何在 Ubuntu 22.04.20.04 和 18.04 LTS 版本中引导到 救援Rescue 模式或 ...