libgcc是GCC的一部分。C语言不仅仅是由编译器构成,还包括了一个标准库。编译器在GCC包里,标准库则位于GNU C库里,即glibc包里。C编译器(cc1
)肯定是要以来glibc库才能正常运行。
opencv交叉编译,但是编译器本身还使用了一个内部库,名为libgcc,这个库位于GCC包里,并不属于GNU C库。这个库实现了一些复杂指令,这些指令并不能由汇编器指令集提供,因此补充了汇编器的不足。但是这个libgcc库也需要链接到glibc库才能完全运行。
注:GNU的标准C++库(libstdc++)也需要链接到glibc库。
这样在交叉编译时就产生了一个“鸡与蛋”的问题。我们需要编译器来编译glibc,但是编译器又依赖glibc才能运行。解决办法如下:
1)首先编译一个 “降级C/C++编译器”,这个降级编译器使用libgcc,但是缺少了一些功能,例如线程支持与异常处理。
2)然后使用这个降级编译器编译glibc,glibc不降级,功能完备。
3)然后编译libstdc++库,但是这个C++也是降级的。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态