关于编译和链接的问题

烟袅许伊 2018-01-31 05:39:32
首先,我所用的库是c++的,所以我想用静态链接的方式完成我的编译链接过程。所以大部分框架部分我是自己搭建的,然后已经用静态链接的方式完成了,比如说内存模块,公共模块,多线程模块,通用网络模块,IO模块,日志模块。比如说lib_mem.a, lib_pub.a, lib_net.a, lib_io.a.....

然后,因为系统要工作于各种不同的网络上,所以我想要将网络模块的子模块通过动态链接的方式实现,当然这在windows下已经实现,不过也没有深究为什么,也就是工作正常,没有Bug。

最后呢,问题来了,既然我要做跨平台的库,转到linux之后我就想弄明白。同上,我的基础模块已经静态编译通过了。由于动态链接的那部分网络子模块也用到了公共模块、内存模块、多线程模块等,automake在编译链接的时候如果不加这些模块就通不过。

问题是:
不将动态链接库中加入这些模块是否可行?
如果我将这些库加入动态链接库中是否可行?
如果可行,那我静态链接的多个是否是相互独立,相互没影响的?

不要说都动态链接。。。那样肯定可行。。。

...全文
486 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
烟袅许伊 2018-02-12
  • 打赏
  • 举报
回复
引用 3 楼 zilaishuichina 的回复:
[quote=引用 2 楼 liugc2008 的回复:] [quote=引用 1 楼 zilaishuichina 的回复:] “因为系统要工作于各种不同的网络上,所以我想要将网络模块的子模块通过动态链接的方式实现” 不明白为什么就要使用动态链接呢
这样我用Zigbee的就不需要编译tcp模块了,这样能明白么?[/quote] 打成静态库也不用再编译啊, 也只是链接一下就可以了[/quote] 已经搞定了,动态链接,连链接都省了。。。
赵4老师 2018-02-03
  • 打赏
  • 举报
回复
使用多进程。
烟袅许伊 2018-02-01
  • 打赏
  • 举报
回复
引用 1 楼 zilaishuichina 的回复:
“因为系统要工作于各种不同的网络上,所以我想要将网络模块的子模块通过动态链接的方式实现” 不明白为什么就要使用动态链接呢
这样我用Zigbee的就不需要编译tcp模块了,这样能明白么?
zilaishuichina 2018-02-01
  • 打赏
  • 举报
回复
引用 2 楼 liugc2008 的回复:
[quote=引用 1 楼 zilaishuichina 的回复:] “因为系统要工作于各种不同的网络上,所以我想要将网络模块的子模块通过动态链接的方式实现” 不明白为什么就要使用动态链接呢
这样我用Zigbee的就不需要编译tcp模块了,这样能明白么?[/quote] 打成静态库也不用再编译啊, 也只是链接一下就可以了
zilaishuichina 2018-01-31
  • 打赏
  • 举报
回复
“因为系统要工作于各种不同的网络上,所以我想要将网络模块的子模块通过动态链接的方式实现” 不明白为什么就要使用动态链接呢

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧