我正在开发一个程序,它生成某些部分作为c/C++库。 例如它会创建目录 - lib1,lib2,..,libN。 对于每个库,它生成c/C++代码+ Makefile,然后使用gcc/g ++ + ld,最后它调用库中的代码。 现在的问题是,如果lib1具有函数fun
和libN,那么当从libN调用fun
时,将使用lib1。 我已经尝试不同版本的gcc/g ++到v4.7。gcc/g ++/ld缓存?
0
A
回答
3
现在的问题是,如果lib1有一个函数fun和libN,当从libN调用fun时,会使用lib1。
想必你正在谈论共享库,而不是归档库(在那里你会得到一个多重定义的符号错误)。
是的,这是它应该如何工作的,并且总是有在UNIX上工作。缓存有什么也没有与它做。
如果你在ELF平台上,你也许能使其利用-Wl,-Bsymbolic
工作更类似于Windows,但你会战斗系统默认的行为,应该期望坎坷不平,和许多意想不到的疑难杂症的的。如果fun
不需要从libX
公开,隐藏symbol visibility是你的朋友。
由于您正在生成lib1
,... libN
的代码,因此可能更容易避免使用例如名称冲突。 libX_fun
而不是fun
。这也会更便携,因为它只会在任何地方工作。
更新:
函数名具有真正根据接口规范是有趣的。
根据谁的接口规格?
你显然控制了主程序和库。所以你可以,而且可能应该改变接口规范来避免这个问题。
相关问题
- 1. 用Symfony2缓存API缓存
- 2. FIFO缓存vs LRU缓存
- 3. Django缓存 - 清除缓存
- 4. 缓存或不缓存
- 5. 可缓存对象缓存
- 6. C# - 缓存加载缓存
- 7. 为什么g ++/ld内存不足?
- 8. 内存缓存
- 9. “缓存:false”PREVENT缓存还是UNIQUE-IFY请求绕过缓存?
- 10. 访问缓存从缓存中缓存对象
- 11. 缓存
- 12. 系统缓存vs无缓存
- 13. Yii2 redis缓存在文件缓存中
- 14. Kohana ORM缓存/缓存设计方法
- 15. 缓存类型和应用缓存
- 16. 缓存,避免缓存内容
- 17. Glassfish v3缓存和清漆缓存
- 18. ASP.NET InProc缓存vs分布式缓存
- 19. 缓存工具的LRU缓存问题
- 20. 在ASP.NET缓存中缓存EF实体
- 21. 使用POST缓存jQuery缓存
- 22. Symfony2缓存包(类似于Zend缓存)
- 23. 缓存到缓存延迟的基准
- 24. w3总缓存缓存文件夹
- 25. 在jQuery中缓存或不缓存$(this)
- 26. HTML5缓存清单缓存一切
- 27. Laravel缓存用户相关缓存
- 28. 物理缓存VS逻辑缓存
- 29. SQLite缓存与应用程序缓存
- 30. 避免在缓存中缓存
根据接口规范,函数名称真的很有趣。 – nil 2012-07-08 10:04:47
'-Wl,-Bsymbolic'没有帮助。但是,我在libX完成工作后立即使用'dlclose'解决了这个问题。如果我想同时使用'lib1',','libN',这将不起作用。 – nil 2012-07-08 10:10:48
有一个预编译的调用'fun'的MATLAB代码,在运行时重新编译它会代价太大。 – nil 2012-07-09 00:00:25