gcc与diab编译器的兼容性问题

您好,在网上看到您在嵌入式方面的解答,感觉您一定能回答我的问题。我现在有一个工程,通过看makefile可以看出是把一堆c++文件和一部分链接文件(由于是买的OS内核,所... 您好,在网上看到您在嵌入式方面的解答,感觉您一定能回答我的问题。我现在有一个工程,通过看makefile可以看出是把一堆c++文件和一部分链接文件(由于是买的OS内核,所以加密了)最终编译链接到一起生成可执行文件。但是内核那部分是用diab编译器编译好的,我现在想改用gcc编译整个工程,target是MPC555,请问行得通吗?一是不同编译器生成的中间文件能不能放到一起的问题,二是BSP也是windriver提供的,用gcc会不会不兼容啊?多谢了大神! 展开
 我来答
小明332
推荐于2018-04-05 · TA获得超过101个赞
知道答主
回答量:63
采纳率:0%
帮助的人:63.4万
展开全部
不好意思刚看到,不同编译器编译的结果不能链接到一起,理由主要有以下两方面:一是不同编译器可能对变量名做不同处理,主要针对c++,好像没有什么编译器对c语言的变量名改变,举个例子,假设c++中的变量test_var,用两种不同编译器编译完该结果可能是Diab_test_var和GCC_test_var成为不同的变量,那么对于连接器来说就是不同的变量怎么会链接到一起是吧。c好像不存在文件名问题,但是c会遇到第二个方面。第二个方面就是不同的编译器会提供一些内部函数比如*(乘以)这个操作在编译器里有定义,有具体的代码来实现,如果编译器不同实现的函数名不同,不会链接到一起。当然还有更复杂的原因,可能我也不太了解。这些是我的理解,可能不全,但是可以肯定的是,不同编译器编译的二进制文件不能链接到一起使用。
至于你说的BSP是风河提供的会不会不兼容的问题,是这样的。通常对于BSP中的c语言部分,无所谓兼不兼容,因为c语言要是ANSI标准的话所有的编译器都会支持。BSP中的汇编部分跟编译器相关,但也是格式上的问题。一般vxworks提供gcc版的bsp(提供不提供其他编译器的BSP我不清楚,因为我们用的是gcc),所以应该是兼容的。假如真的不提供,可以按照gcc汇编语法,把BSP中的函数和变量以及伪指令部分更改成符合GCC语法即可,整体的汇编不需要更改,这部分工作很小的应该不难。
我知道的就这些,希望能帮到你。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式