2009年11月20日 星期五

fakeroot make error in ubuntu

在編譯fakeroot時,會遇到下面的錯誤。

/bin/sh ./libtool --tag=CC   --mode=link gcc  -g -O2   -o faked faked.o libcommunicate.la -ldl
eval: 1: libtool_args+=: not found
eval: 1: compile_command+=: not found
eval: 1: finalize_command+=: not found
eval: 1: libtool_args+=: not found
eval: 1: compile_command+=: not found
eval: 1: finalize_command+=: not found
eval: 1: libtool_args+=: not found
eval: 1: compile_command+=: not found
eval: 1: finalize_command+=: not found
eval: 1: libtool_args+=: not found
eval: 1: compile_command+=: not found
eval: 1: finalize_command+=: not found
eval: 1: libtool_args+=: not found
eval: 1: compile_command+=: not found
eval: 1: finalize_command+=: not found
eval: 1: libtool_args+=: not found
eval: 1: libtool_args+=: not found
libtool: link: gcc  ./.libs/libcommunicate.a -ldl
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/crt1.o: In function `_start':
/build/buildd/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status

google網頁的結果,好像是ubuntu/Debian才有的bug。如果想要cross compile,單單下載官方編譯好的版本是無濟於事的。解決方法如下:

1. 備份/bin/sh檔案
mv /bin/sh /bin/sh.bak

2. 建立連結
ln –s /bin/bash /bin/sh

這樣應該就可以正確通過編譯。

編譯完之後別忘了把之前改過的sh還原回來。

參考資料:
[1] libtool_args+=: not found - 想飛的翅膀

沒有留言: