解决编译中“file too short”问题

       最近在编译中遇到下面的问题,由于代码是刚从svn上checkout下来的,下意识觉得没什么问题,因此折腾了比较久的时间,现在分享一下,问题如下:

/usr/lib/gcc/x86_64-linux-gnu/4.4.7/cc1: error while loading shared libraries: /home/zouchun/cucc/source/compatible_branch/make/../cross_compiler/arm-linux-glibc/lib/libmpfr.so.4: file too short

       此时查看相应路径下的文件情况,发现相应的文件是软链接,但是仍然看不出软链接的链接方式,具体如下:

[zouchun@soft4dept-ubuntu lib]$ls -l
total 992
drwxr-xr-x 2 zouchun zouchun   4096 Aug 23 19:37 gawk
drwxr-xr-x 3 zouchun zouchun   4096 Aug 23 19:37 gcc
drwxr-xr-x 2 zouchun zouchun   4096 Aug 23 19:37 ldscripts
-rwxr--r-- 1 zouchun zouchun     21 Aug 23 19:37 libgmp.so
-rwxr--r-- 1 zouchun zouchun     21 Aug 23 19:37 libgmp.so.10
-rwxr--r-- 1 zouchun zouchun 478466 Aug 23 19:37 libgmp.so.10.2.0
-rwxr--r-- 1 zouchun zouchun     20 Aug 23 19:37 libmpc.so
-rwxr--r-- 1 zouchun zouchun     20 Aug 23 19:37 libmpc.so.3
-rwxr--r-- 1 zouchun zouchun 100581 Aug 23 19:37 libmpc.so.3.0.0
-rwxr--r-- 1 zouchun zouchun     21 Aug 23 19:37 libmpfr.so
-rwxr--r-- 1 zouchun zouchun     21 Aug 23 19:37 libmpfr.so.4
-rwxr--r-- 1 zouchun zouchun 395684 Aug 23 19:37 libmpfr.so.4.1.3

       继续查看相关的文件,发现libgmp.so实际链接到libgmp.so.10.2.0,查看其它几个文件是同样的道理,如下:

[zouchun@soft4dept-ubuntu lib]$vi libgmp.so   
link libgmp.so.10.2.0    //软链接指向
~
~

       这说明我们的软链接出现了问题,此时我们可以删除软链接,然后重新建立软链接,如下:

[zouchun@soft4dept-ubuntu lib]$rm libgmp.so           //删除软链接的.so文件
[zouchun@soft4dept-ubuntu lib]$rm libgmp.so.10//删除软链接的.so文件
[zouchun@soft4dept-ubuntu lib]$ln -s libgmp.so.10.2.0 libgmp.so.10    //根据文件的指示重新建立软链接
[zouchun@soft4dept-ubuntu lib]$ln -s libgmp.so.10.2.0 libgmp.so//根据文件的指示重新建立软链接

       建立软连接后,查看相关的软链接如下:

[zouchun@soft4dept-ubuntu lib]$ls -l
total 984
drwxr-xr-x 2 zouchun zouchun   4096 Aug 23 19:37 gawk
drwxr-xr-x 3 zouchun zouchun   4096 Aug 23 19:37 gcc
drwxr-xr-x 2 zouchun zouchun   4096 Aug 23 19:37 ldscripts
lrwxrwxrwx 1 zouchun zouchun     16 Aug 25 09:01 libgmp.so -> libgmp.so.10.2.0         //建立软链接后
lrwxrwxrwx 1 zouchun zouchun     16 Aug 25 09:00 libgmp.so.10 -> libgmp.so.10.2.0     //建立软链接后
-rwxr--r-- 1 zouchun zouchun 478466 Aug 23 19:37 libgmp.so.10.2.0
-rwxr--r-- 1 zouchun zouchun     20 Aug 23 19:37 libmpc.so
-rwxr--r-- 1 zouchun zouchun     20 Aug 23 19:37 libmpc.so.3
-rwxr--r-- 1 zouchun zouchun 100581 Aug 23 19:37 libmpc.so.3.0.0
-rwxr--r-- 1 zouchun zouchun     21 Aug 23 19:37 libmpfr.so
-rwxr--r-- 1 zouchun zouchun     21 Aug 23 19:37 libmpfr.so.4
-rwxr--r-- 1 zouchun zouchun 395684 Aug 23 19:37 libmpfr.so.4.1.3 

       建立软链接后,重新编译代码正常,但是这里强调一点,此方法只对于局部的软链接实现很有用,但对于一些场景,所有的软链接都失效了,这种情况如果还使用此方法,估计会累死你。对于所有的软链接都失效的情况,常见的是通过svn下载代码到windows本地,这个时候就会导致所有的软链接失效,同时同名但通过大小写进行区分的文件会被覆盖,最好的建议是代码直接放在Linux系统上,避免下载到windows本地。

你可能感兴趣的:(交叉编译,交叉编译中的file,too,short)