样例描述:我有一个main.cpp文件件,add.cpp ,add.h ,subtract.cpp ,subtract.h文件,main.cpp里面调用加法和减法的函数,把加法和减法准备编译成动态库 libalgorithm.so,然后main调用这个头文件add.h,subtract.h,然后就能够实现调用动态库

1、mkdir include ;lib ;src;

2、src 中放入add.cpp subtract.cpp,Makefile文件

Makefile :

CC  ?= gcc
CXX ?= g++

#CXXFLAGS  += -g -Wall -Werror -pthread -fopenmp -fPIC -g -std=c++11
CXXFLAGS  += -g -Wall -Werror -pthread
INCLUDES = -I ~/E/test_libso/include
SRC_PATH := ~/E/test_libso/src
CXX_SRC = ${wildcard $(SRC_PATH)/*.cpp}

libalgorithm.so:$(CXX_SRC)
        $(CXX) -o $@ $^ $(CXXFLAGS) $(INCLUDES) -shared -fPIC 
clean:
    rm -f *.so *.o

3、在src中make一下,就会生成libalgorithm.so动态库

4、在上一级目录中,放入main.cpp和Makefile

Makefile:

CC  ?= gcc
CXX ?= g++

CXXFLAGS  += -g -Wall -Werror -pthread -fopenmp -fPIC -g -std=c++11
CXXFLAGS  += -g -Wall -Werror -pthread
INCLUDES += -I ~/E/test_libso/include
LFLAGS += -L ~/E/test_libso/lib

LIBS = -lpthread -pthread -ldl -lalgorithm
SRC_PATH := ~/E/test_libso
CXX_SRC = ${wildcard $(SRC_PATH)/*.cpp}

TARGET=main
$(TARGET): $(CXX_SRC)
        $(CXX) -o $@ $^ $(CXXFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS)  
clean:
    rm -f *.so *.o

5、make 一下,就会生成main可执行文件,其功能输入两个数自动完成加法和减法的计算功能

linux下怎么编译动态库并且调用相关推荐

  1. linux动态库路径生效,Linux下如何解决动态库的链接问题

    原标题:Linux下如何解决动态库的链接问题 静态库是一种以空间换取时间和移植性的做法,一些情况下确实有着一定的意义,但是一些情况下,我们自己编写的简单项目,在绝大多数的机器上不存在移植性问题,是没有 ...

  2. CMake从0到1:Linux编译动态库,调用动态库,VSCode单步执行

    工欲善其事必先利其器,如果要想在Linux系统上编写C++代码,常常我们会有如下几个需求: 1.编译可执行文件 2.可执行文件调用动态库,这里通常包括两种情况:(1)自己的动态库,那就得先生成再链接: ...

  3. 查看linux下程序或者动态库到底依赖哪些so动态库以及对应的版本

    一. ldd命令 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/ls linux-vdso.so.1 => (0x00 ...

  4. 记录-linux下matlab编译so,c++调用

    参考:https://blog.csdn.net/qq_41990294/article/details/109154801 参考:https://www.it610.com/article/5486 ...

  5. [转]Linux下g++编译与使用静态库(.a)和动态库(.os) (+修正与解释)

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库 ...

  6. linux c 如何编译静态库,Linux C 编程入门之一:gcc 编译动态库和静态库

    主调用程序源代码3-1:main.c /** * main.c */ #include #include #include "hello_fn.h" int main () { h ...

  7. Linux环境编译动态库和静态库总结

    首先总结静态库的编译步骤. 1 先基于.cpp或者.c文件生成对应的.o文件 2将几个.o文件 使用ar -cr命令 生成libname.a文件 libname.a 为静态库, name 为静态库的名 ...

  8. linux动态库so调用外部so,运行时出现undefined symbol

    出现这种问题,一般为某工程的动态链接库出现问题,一般为以下解决办法: 一.当前工程的.so文件和生成该.so文件的工程代码不一致,当前.so文件中不包含工程代码中的某些函数.例如我的工程代码中有Nda ...

  9. Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'

    编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a ...

最新文章

  1. ClickHouse | MergeTree引擎之数据分区
  2. Python3 爬虫学习笔记 C06 【正则表达式】
  3. 多源异构数据_构建数字孪生城市的CIM数据平台哪家强?
  4. wps中图片怎么居中_wps图片怎么添加推动声
  5. linux 可道云_如何搭建私有云
  6. 使用三重损失网络学习位置嵌入:让位置数据也能进行算术运算
  7. Sublime Text3 Emmet用法
  8. vcredist_x64.exe/vcredist_x86.exe的用处
  9. 190501每日一句
  10. AS星尘粒子系统 初识2
  11. 如何改变win10鼠标样式
  12. 【数据分析】销售案例——用户购买频次
  13. 用python爬取qq空间内容_Python爬取qq空间说说的实例代码
  14. html下划线怎么做成超链接,html超链接下划线应该加吗?
  15. apachectl 命令详解-graceful 不中断原有连接,重新启动 Apache 服务器
  16. 32位无符号随机函数
  17. random用法 python_python:random用法
  18. 计算机的网络安全事件,网络安全事件报告与处置流程
  19. 计算机修复无法启动怎么还原,电脑无法开机时如何恢复系统?
  20. 玩游戏计算机配置,玩大型游戏需要什么配置

热门文章

  1. 猴子吃桃问题(南阳ACM324)
  2. [转载] 民兵葛二蛋——第1集
  3. TCP/IP(三):IP协议相关技术
  4. 数据轮播图翻页封装(左右点击)
  5. EXCEL 图表 只在拐点的时候显示数字
  6. Django基本命令
  7. 【NOIP】关押罪犯
  8. uva1331三角剖分
  9. ASCII码、HEX、字符、BCD 等等 基础知识思考
  10. Oracle 修改SYS、system用户密码