遇见棘手问题:
如: 在 llvm34 version up 时, 需要修改td文件,大量修改。
尽可能先 跳过。(这也是在领导督促下,为了尽快解决问题实行的方法。可以极大搞清进度)。等解决完其他问题之后,再集中精力解决难题。
移植时候,修改代码 需要 注意牵一发而动全身: 不能只管修改一处,应是,其他涉及的地方都要一起改了,否则,即使当时编译通过了,可是隐藏的问题发现不了。通常可能导致段错误等等“难题”,通常是由于修改不全问题导致。
======================================================================
交叉编译clang,20bit 溢出问题:
关于 switch case
代码 的修改, 把case里面的代码 写成函数形式,可以减少代码跳转的代码条数。
就可以解决了。
--------------------------------------------------------------------------
--------------------------------------------------------------------------
编译 链接时 出错 undefined reference to `xxx' :
找原因可以通过 执行 cc xx.c -v .
----------------------------------------------------------
/tmp/ccY0orU6.s:55241: Error: displacement overflows 20-bit field.
去掉编译选项 -fPIC 可能会解决,至少会减少错误数。
在llvm_root/ Makefile.rule 中搜索 -fPIC并注掉,即可。
或者 查找 ENABLE_PIC。
---------------------------------------------------------
#include_next",表示包含文件名为该名字的下一个头文件。这条语句使编译器到其它目录中搜索该头文件。
假设有 A B C D四个搜索路径。
在B路径下的一个头文件里面有 #include_next <xxx>
那么只会去C D里搜索 xxx 。
A B里面的头文件会被忽略掉。 如果 CD里没有 xxx ,则会报错。
-------------------------------------------------------------------------------------------------------------------------------------------------
ld: cannot find -lxxx
如果路径指定了,名字也对。那么肯定是库的格式不对。 即 经常把x86的库当作arm等的库来使,会被跳过忽略 ld: skipping incompatible xxx,当然报错找不到了。