如果不知道什么是makefile,可以首先看我的另一篇博客:

linux下Makefile的简单例子及解释

http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html

其实,包含有shared library动态链接库文件的编译链接过程,和不包含的在dependency关系的处理上完全一样,没什么区别,只是g++编译链接含有shared library文件的时候,命令加上相对应的参数(-shared -fPIC -L. -ltest等)即可。

这里有2个文件,一个是test.cpp(中包含有一个test()函数),要编译成libtest.so

另一个是main.cpp(调用test()),要编译成main.o

然后将main.o和libtest.so链接成一个main(最终的可执行文件)

test.cpp   ->   libtest.so

main.cpp  ->   main.o

main.o + libtest.so ->  main

下面是代码和makefile:

test.cpp & main.cpp:

//test.cpp
#include <iostream>
using namespace std;void test()
{cout<<"test() in test.cpp"<<endl;
}

//main.cpp
#include <iostream>
using namespace std;void test();int main()
{test();
}

makefile:

main: main.o libtest.sog++ -o main main.o -L. -ltestmain.o: main.cppg++ -o main.o main.cpp -clibtest.so: test.cppg++ -o libtest.so test.cpp -shared -fPICclean:rm *so* *.o main

可以看到,没有太大的区别,dependecy的写法根本没变,只是加上一些参数而已。

linux下Makefile中包含有shared library动态链接库文件时候的简单例子相关推荐

  1. Linux下Makefile中动态链接库和静态链接库的生成与调用

    背景:写这篇博客的原因是:最近在搞嵌入式,需要交叉编译opencv库文件,自己写Makefile,通过arm-linux-g++编译.链接.生成可执行文件,从而实现了移植的过程.平台是Toradex的 ...

  2. linux下makefile中cp,make与makefile 的理解

    当我们写程序过程中存在多个文件之间有复杂的包含关系时,若修改了其中一个源文件,就重新编译所有文件,一般是不必要的,并且当文件很多时,就显得非常笨拙.所有包含该文件的文件需要重新编译,而其它无关系的文件 ...

  3. linux下makefile

    概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 professional的程序员,mak ...

  4. linux下Makefile学习--注释很好

    什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还 ...

  5. Linux下makefile教程

    概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 professional的程序员,mak ...

  6. LINUX下tar.gz包的安装方法

    LINUX下tar.gz包的安装方法 在tar.gz的东西不多了---- ======================================== 大多以tar.gz 和tar.bz2打包软件 ...

  7. Linux下Makefile的automake生成全攻略(转)

    Linux下Makefile的automake生成全攻略(转)[@more@] 文/余涛 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便 ...

  8. Linux下 QT中 log4cplus 最基本配置及使用

    Linux下 QT中 log4cplus 最基本配置及使用 鉴于网上很多使用方法不是很详细,对小白不友好,并且以此作为记录,方便下次配置. 本文是基于我自己下载的版本写的,请各位根据自己下载的版本更改 ...

  9. Linux下C++中可使用的3种Hook方法

    Hook即钩子,截获API调用的技术,是将执行流程重定向到你自己的代码,类似于hack.如使程序运行时调用你自己实现的malloc函数代替调用系统库中的malloc函数.这里介绍下Linux下C++中 ...

最新文章

  1. AVCDecoderConfiguration语法格式分析
  2. 爬虫总结(三)-- cloud scrapy
  3. CodeForces - 1339C Powered Addition(思维+贪心)
  4. Go-cron定时任务
  5. 学习人工智能不走捷径,走大道的方式
  6. php7扩展sphinx,php7进行安装sphinx简单记录
  7. 第十五讲 循环体for基础
  8. Asp.net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用...
  9. python安装chardet_Python使用chardet判断字符编码
  10. cubietruck下配置aria2+yaaw
  11. 关于高级交互设计师的5个经验总结
  12. [USACO16DEC]Team Building团队建设
  13. 重庆大学计算机学院学术委员会,学术委员会
  14. 多分类任务ovo、ovr及softmax回归
  15. Linux 命令详解之df命令
  16. 重磅!这些高校公布扩招规模,博士将达10万人……
  17. 脑院计算机专业,神经元规模最大的类脑计算机诞生
  18. Cesium 无法加载出地球
  19. 提升电磁兼容性的软件策略:EMC不只是硬件工程师的锅
  20. git下载并安装以及gitee的使用(快速搭建属于自己的云仓库)

热门文章

  1. 7-Zip 19.00 正式版发布,修正 Win10 1809(17763) 可能无法正常使用大内存页
  2. shell中exec解析
  3. 监控日志采集的一些TIPS
  4. 您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  5. weiphp----------图灵机器人存在的bug。
  6. 页面滚动动态加载数据,页面下拉自动加载内容
  7. 获取应用的当前版本号获取当前android系统的版本号
  8. ***测试技巧总结更新篇3
  9. 新书《路由器配置与管理完全手册——Cisco篇》目录抢鲜暴光
  10. 让迅雷的胃口变得更大!