hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
阅读:3498回复:2

探讨TARGETLIBS 和 SOURCELIBS 的区别

楼主#
更多 发布于:2008-01-24 22:28
个人认为在Source文件中,
TARGETLIBS  是一种动态链接,需要什么则链接什么;
SOURCELIBS  则是一种静态链接,编译到目标DLL或LIB中。

一般设定情况是:
TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
   $(_SYSGENOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib \

TARGETLIBS链接的是一些公共的库。

SOURCELIBS= \
   $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\wavemdd.lib

SOURCELIBS链接的是与平台相关或本驱动相关的库。

不知道,大伙对TARGETLIBS  和 SOURCELIBS 的区别有什么不同的意见或更深层次的见解,欢迎交流!
http://hanson.cnblogs.com/
hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
沙发#
发布于:2008-01-25 16:59
楼上正解, targetlib 引用的是在运行时其他dll导出的.
 sourcelib中引用的二进制代码直接拷贝连接到目标文件中.
hanson_csu
驱动牛犊
驱动牛犊
  • 注册日期2008-01-22
  • 最后登录2009-10-16
  • 粉丝0
  • 关注0
  • 积分571分
  • 威望59点
  • 贡献值0点
  • 好评度57点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-01-25 22:12
我的理解也是hunbalo所说。

TARGETLIBS,如果一个库以DLL的形式提供给调用者,就需要用TARGETLIBS,它只链接一个函数地址,系统执行时会将被链接的库加载。比如coredll.lib , CEDDK.lib就是这样的库文件。即动态链接。

SOURCELIBS,将库中的函数实体链接进来。即静态链接,用到的函数会在我们的文件中形成一份拷贝。
http://hanson.cnblogs.com/
游客

返回顶部