分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

初学Makefile,权当是笔记,希望对别人有些帮助吧。

------------------------------------------------------------------------------------

本次例子目录结构如下:

目录说明:

lib目录是我自己写的一个so库文件,名为libA.so,很简单,里面的内容截图如下:

-------------------------------------------------------------------------------------------------------------

main目录是测试程序所在目录,用于测试libA.so,里面的内容截图如下:

---------------------------------------------------------------------------------------------------------------------

release目录用于存放编译后的so库文件和编译后的测试程序,截图如下:

-----------------------------------------------------------------------------------------------------------------------

因为main.out用于测试libA.so,所以编译时我们必须先编译libA.so,

libA.so的Makefile内容如下:

exe=../release/libA.so### 链接目标文件$(exe):libA.o gcc -o $(exe) -lstdc++ -fPIC -shared -Xlinker libA.o ### 编译源文件libA.o:libA.cpp gcc -lstdc++ -c libA.cpp clean: -rm *.out *.o *.bak

---------------------------------------------------------------------------------------------------------------------------------------

libA.cpp内容如下:

#include <stdio.h>void ShowHello(){ printf("hello libA \n");}

----------------------------------------------------------------------------------------

main.cpp的Makefile内容如下:

exe=../release/main.out### 链接目标文件### -L ../release  用于指定libA.so所在目录### -lA  链接库文件libA.so$(exe):main.o gcc -o $(exe) -lstdc++ -Xlinker main.o -L ../release -lA ### 编译源文件main.o:main.cpp gcc -lstdc++ -c main.cpp clean: -rm *.out *.o *.bak

--------------------------------------------------------------------------------------------------------------

main.cpp内容如下:

#include<stdio.h>extern void ShowHello();int main(void){ ShowHello(); return 0;}

--------------------------------------------------------------------------------

编译好libA.cpp和main.cpp,跳到release运行main.out,效果如下:

-----------------------------------------------------------------------------------------------------------------------------------------------------

题外话:

运行程序如果提示找不到xxx.so,
敲以下命令即可:
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH      // 把当前目录加入到库文件搜索目录环境变量

我当时的错误提示如下:

./main.out 
./main.out: error while loading shared libraries: libA.so: cannot open shared object file: No such file or directory

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

使用Makefile链接so库文件相关推荐

  1. Makefile 编译动态库文件及链接动态库

    原文转自 :http://www.cnblogs.com/ljtknowns/p/5647793.html 文件目录结构如下 1 dynamiclibapp.c 2 Makefile 3 comm/i ...

  2. Keil5.15使用GCC编译器链接.a库文件

    我们知道,当使用第三方的代码时,人家有可能会扔个Lib文件给你.这时候,别人仅仅要提供header文件给你,则你就能够通过Lib文件及header的函数声明,对Lib中的函数进行调用.在Keil中假设 ...

  3. linux mysql makefile_Linux安装库文件(环境变量和makefile)

    CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项. 这两个变量实际上涵盖了编译和汇编两个步骤. CFLAGS/CPPFLAGS: 指定头文件(.h文件)的路 ...

  4. 四、Makefile包含 头文件和库文件

    一.Makefile规则 二.Makefile案例-多个文件生成一个目标文件 三.Makefile–生成多个目标文件 四.Makefile包含 头文件和库文件 此篇文章以三.Makefile–生成多个 ...

  5. linux 链接库文件出现“undefined reference to 问题的解决方法

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

  6. cmake 头文件 库文件

    目录 配置release 库导出目录 添加依赖库 其他知识 最后贴一个完整的例子 配置release 选择release或debug版本: cmake 编译Release版本_jacke121的专栏- ...

  7. Linux下c/c++头文件和库文件的查找路径

    简介 这是个相当基础的话题,平时也觉得知道一点.如头文件会先在当前目录查找,如果未找到会查找系统目录. 但当问题出现时,还是有点不知所措,对所谓的"系统目录"一知半解,很难把它们的 ...

  8. 【转】头文件和库文件区别

    头文件提供声明,库文件提供定义/实现. C 代码的编译过程: 预处理(需要头文件) -> 编译 -> 汇编 -> 链接(需要库文件); 执行时可能还有动态链接过程. 编译的时候,只要 ...

  9. cmake 头文件 库文件 路径搜索 CMAKE_INCLUDE_PATH CMAKE_LIBRARY_PATH

    目录 cmake中定义搜索路径 修改环境变量增加搜索路径 FIND 系列指令,通过FIND寻找路径并进行添加 大型开源库路径添加方式 find_package采用两种模式搜索库 路径搜索,这里介绍头文 ...

最新文章

  1. mysql导入指定数据库_从mysql全备 导入指定数据库的数据:三种考虑方法
  2. 手把手教你36小时搭建无人超市系统 !(附代码)
  3. 天猫总裁靖捷回答了今年双11的热点问题
  4. ASP.NET MVC 二维码生成(ThoughtWorks.QRCode)
  5. python随机补边缘border
  6. Comet OJ - 模拟赛 #2 Day2
  7. SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能试读版
  8. 全球企业KVM开源贡献榜发布,腾讯云、华为、阿里巴巴等入围
  9. Nat Biotechnol | 大神李恒团队开发不依赖于亲本的单倍型基因组组装工具hifiasm
  10. 使用VS2010代码分析功能增强ASP.NET应“.NET研究”用程序安全
  11. c语言增加动态分配的存储空间吗,C语言 关于内存动态分配问题
  12. android Baseadapter 和 ViewHolder的使用
  13. Hdoj 2563.统计问题 题解
  14. 对象创建从农业社会到共产主义的发展
  15. 1.4-nginx启动脚本和配置文件
  16. 冒险岛079单机搭建流程
  17. BlackBerry不能上网问题解决方案
  18. LINUX 下无线网卡 rtl8821CE/rtl8723de 驱动 无法驱动解决办法
  19. 虎从风跃,龙借云行--神行者Wi10无线移动硬盘开启WIFI无线存储共享新时代_MID论坛_太平洋电脑网产品论坛...
  20. 班主任工作中如何融入生态文明教育?

热门文章

  1. FME如何采集肯德基中国的所有门店地址(一)
  2. 计算机分析报告摘要怎么写,计算机实践论文摘要怎么写 计算机实践论文摘要范文参考...
  3. Internet协议栈 TCP/IP模型 、以太网封装以及解封装过程、物理层、链路层、网络层、传输层、应用层的作用 OSI七层模型
  4. Android开发板 MTK 4g/5g 安卓开发板定制
  5. 电力电子器件 简答题
  6. 微软重拾荣光:股价距1999年历史高点仅差7%
  7. win7 ftp服务器修改读写权限,win7 ftp服务器文件夹权限修改
  8. win7计算机无用系统文件夹,c盘怎么清理到最干净(win7如何删除c盘无用文件)...
  9. numpy 矩阵的逗号与冒号的使用方法
  10. 如何将mkv格式电影转换为MP4格式