读书人

C++语言是有基准的那么C++的编译器和

发布时间: 2013-04-21 21:18:07 作者: rapoo

C++语言是有标准的,那么C++的编译器和连接器是否有标准?
为什么同在windows下,VC编译器和GCC编译器做出来的静态链接库都是无法通用的,而且用于动态链接时的链接文件也是无法通用的
[解决办法]
只要能实现c++标准中规定的语言相关特性,谁管编译器本身具体怎么实现的。同一系列的编译器不同版本编译出来的库都可能不通用,更何况不同的编译器。
[解决办法]
PE 是 ld 负责生成的
可以看看 mingw32\lib\ldscripts 下的文件.

编译器, 不管是 vc 还是 gcc 都是针对某个目标平台(i386等等)生成机器指令,
最终制品的生成才涉及到 ELF, PE 之类的,
无非就是一个操作系统可以理解的数据库结构.

至于动态库的导入库, 只是连接器所认识的格式差异,
相互之间生成可以理解的, 也不是难事.
这方面的专著是 <linker and loader>.

[解决办法]
同一平台下的可执行文件有各自的标准。。把gcc移植到windows下,就要重新编译成PE文件。

至于库么,别多想了
[解决办法]
确实没有。
连同一个编译器debug和release编译的静态库都不能通用。

读书人网 >C++

热点推荐