星期三, 九月 19, 2007

编译时找不到头文件的方法

找不到头文件倒是很容易解决的,internal error就比较麻烦了,呵呵。可以给你提供个办法:

找不到头文件是 preprocess时出的问题,那么1可以在编译的时加-v选项打开verbose看编译器的搜索路径,比如arm-linux-gcc -c -v hello.c,可以看到编译过程中头文件的搜索路径;2,可以先手动做preprocess,比如arm-linux-gcc -E hello.c > hello_pre.c,这样,打开hello_pre.c,就可以看见所有的头文件和宏都已经展开了,而且用的哪个文件也在里面,被#注释着。另外,在 vi里面可以执行:g/^#/d,把#为开头的行删除,保存hello_pre.c,再编译arm-linux-gcc -c hello_pre.c,出错的话根据报的行号可以准确地定位问题在哪里。你的问题很可能是编译器没有被放在它静态编译的路径上造成的,编译器不是放在任 何路径上都能用的。

internal error就是编译器在报assert,如果对编译器比较熟悉的话就下载个gcc3.4.1的版本看看gcc/config/arm/arm.c: 9816,看看究竟为什么。这个地方应该是gcc的与体系结构相关rtl层在emit code时出现的。研究gcc也是很有意思的哦,不要放弃学习的机会。不过总的来说还是自己做套toolchain好一些,你下载的这个有没有人测过是不 是稳定的都搞不清楚。

0 意見: