2017-12-23 25 views
0

私のルーターでMIPSEL用にクロスコンパイルしようとしています。アセンブリで作業しているものがありましたが、現在は基本的なCコードをコンパイルしようとしています。どのlibc.soがリンクされるかを変更しますか?

現在、単純なhello worldのcコードがあり、アセンブリのために動作するmipsel-linux-gnu-gccコンパイラを使用しています。

コンパイラのコマンドは:

mipsel-linux-gnu-gcc -L/home/uname/devel/extr/squashfs-root/lib -l:libc.so.0 -mips32 -Wl,--build-id=none -Wl,--dynamic-linker=/lib/ld-uClibc.so.0 ma.c 

libc.so.0は、ルータのファームウェアから抽出されます。

プログラムのコンパイル

、しかしreadelfがで、問題は、それがファームウェアからbusyboxのバイナリを引いて、その上にreadelfが実行に対し、libc.so.6と

0x00000001 (NEEDED)      Shared library: [libc.so.6] 

にリンクということです

0x00000001 (NEEDED)      Shared library: [libc.so.0] 

libc.so.0とリンクするにはどうしたらいいですか?

答えて

0

標準のglibcパスを否定する必要があるようです。コンパイラがこれを最初にチェックするためです。これは-nostdincでコンパイルすることによって行うことができます。

0

here.はそれを考え出し説明したようにあなたは、その後-Iする必要があります

は、gccのヘッダと、このようなが含まれています。 buildrootを使用してuClibcツールチェーンを構築しなければなりませんでした。

関連する問題