start.o:start.S:274: relocation truncated to fit: R_MIPS_GOT16 against `no symbol'
start.o:start.S:292: relocation truncated to fit: R_MIPS_CALL16 against `simple_mips_cache_reset'
start.o:start.S:303: relocation truncated to fit: R_MIPS_CALL16 against `mips_cache_lock_24k'
start.o:start.S:314: relocation truncated to fit: R_MIPS_GOT16 against `no symbol'
start.o:start.S:347: relocation truncated to fit: R_MIPS_CALL16 against `main'
這個討人厭的error似乎是幾個不同的因素造成的..
1. compile flag沒有補上-mxgot, 所以無法support large GOT, 造成最後linking的時候他找不到GOT
2. 以上的條件是如果compiler有support -mxgot, 不過這似乎是很新的patch, 以我現在用的gcc 3.4.4來看似乎沒有, grep一下source code, 還真的連個影子都沒有, :( 但是patch的code卻又完全看不太懂 :( ㄧ整個很慘.. (http://gcc.gnu.org/ml/gcc-patches/2008-06/msg00094.html)
3. 另外一個有人提到的可能性, (http://blog.csdn.net/yirui/archive/2007/06/30/1672503.aspx), 簡言之大概就是兩個lib support的長度不同造成這樣的差異
以上不知道哪個可以解決我的問題, 等我重新compile lib之後再來update看看~
2009/11/10, Ryan
2 則留言:
PIC code is the issue, this fix my problem!
http://www.linux-mips.org/archives/linux-mips/2006-04/msg00182.html
This is one of the solution to similar issue which would be a good reference.
http://www.newmicros.com/discussion/showthread.php?t=1150
張貼留言