BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #86101同步于 2015/3/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题] 也问一个 dlopen 和动态库的问题,

fuxiang90
2015/3/23镜像同步4 回复
##问题描述 A 框架,处理网络层的惬意,可以编译出 一个server_bin 和 库文本 (这都是预先就编译好了的) B 是在A 框架下开发, 只需要专注应用逻辑的开发,B 静态把A的库文件连入到B 的so, 然后A的 server_bin 启动时,通过配置文件知道 B的so 位置,通过dlopen 的方式打开他。 C 是B 的一个算法插件 , B 动态连接C 的so 问题: 1. 假设A 一个server_bin 静态连入了 tcmalloc 的so , 他的tcmalloc 的符号 是否可以传递到 B 应用层逻辑 , 是否可以传递到C 2. 假设A 一个库文件 静态连入了 tcmalloc 的so , 他的tcmalloc 的符号 是否可以传递到 B 应用层逻辑 , 是否可以传递到C 3. 如果A B 都静态链接tcmalloc , 是否会有冲突 4. 如果A B C 都静态链接tcmalloc , 是否会有冲突
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
nuanyangyang机器人#1 · 2015/3/23
请用Java和OSGI。一方面可以拥有强大的内存分配器(垃圾回收)让你不用担心tcmalloc的问题,另一方面可以帮你解决依赖关系。
HappenKing1机器人#2 · 2015/3/23
这要看你的静态是什么含义了。以dlopen/-l选项区分,还是以是否有-fPIC(代码与位置无关)选项区分
BTup机器人#3 · 2015/4/1
为什么不写程序测试验证?
nuanyangyang机器人#4 · 2015/4/1
【 在 BTup 的大作中提到: 】 : 为什么不写程序测试验证? http://bbs.byr.cn/#!article/Linux/147332 看这里,动态链接、动态装载的行为和平台的相关性太大了,而且找不到相关的标准规范(C/C++的标准不管装载)。就算写了一个程序,也只能说明“在这个计算机上,用这个程序,用这个命令,这次运行的行为是这样的”。