2017-11-01 14 views
0

ASUS RT-AC66UにGPIOが必要です。だから私はMCP2221Aを使って回路基板を作ったのです。MIPSルータでコンパイルされた実行ファイルが "見つからない"場合

this source私は実行可能ファイルをビルドしてx86-64bitマシン(Xubuntu 16.04)で実行することができ、すべて正常に動作します。

今私は、MIPSに同じソースをクロスコンパイルしていると、このエラーが発生します。

[email protected]:/tmp/home/root/gpio$ ls -la 
drwxrwxrwx 2 frashman root   180 Nov 1 12:16 . 
drwx------ 4 frashman root   100 Nov 1 12:16 .. 
-rw-rw-rw- 1 frashman root   485 Nov 1 12:16 Makefile 
-rwxrwxr-x 1 frashman root   10044 Nov 1 12:16 gpio 
-rw-rw-r-- 1 frashman root   19857 Nov 1 12:16 hid.c 
-rw-rw-r-- 1 frashman root   13870 Nov 1 12:16 hidapi.h 
-rw-rw-r-- 1 frashman root   24758 Nov 1 12:16 libmcp2221.h 
-rw-rw-r-- 1 frashman root   3122 Nov 1 12:16 main.c 
-rw-rw-r-- 1 frashman root   4456 Nov 1 12:16 main.o 
[email protected]:/tmp/home/root/gpio$ ./gpio 
-sh: ./gpio: not found 

[OK]をので、私はDebian subsystemとルータ自体のソースを構築し、バイナリファイルを除いて(エラーなしで実行されます0のための装置見つかった - それは、これを書いた時点で接続されていなかった)

[email protected]:/home/admin/gpio$ ./gpio 
Starting! 
Looking for devices... found 0 devices 
Opening device... No MCP2221s found 

をしかし、私はルータのメインシステムで、このバイナリを実行する場合、それは同じエラーで停止します。

[email protected]:/tmp/mnt/entware/entware/debian/home/admin/gpio$ ./gpio 
-sh: ./gpio: not found 

これは、メイクファイルです:

PROJECT=gpio 

SOURCES= \ 
    main.c 

CFLAGS= \ 
    -c \ 
    -Wall \ 
    -Wextra \ 
    -Wstrict-prototypes \ 
    -Wunused-result \ 
    -O3 \ 
    -std=c99 \ 
    -fmessage-length=0 \ 
    -mtune=mips32r2 \ 
    -mips32r2 

LDFLAGS= \ 
    -s 

LDLIBS= \ 
    -lmcp2221 

EXECUTABLE=$(PROJECT) 

CC=mipsel-linux-gnu-gcc 
OBJECTS=$(SOURCES:.c=.o) 


all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) $(LDLIBS) -o [email protected] 

.c.o: 
    $(CC) $(CFLAGS) $< -o [email protected] 

clean: 
    rm -rf *.o $(EXECUTABLE) 

.PHONY: clean all 

誰もがそれは可能性があり、なぜアイデアを持っていますか?

答えて

0

run readelf -l gpio | grep -i interpreter。それは存在する必要があるldsoへのパスを示すはずです。システム上のread39を/bin/sh上で実行することと比較して、期待される内容を確認することができます。

パスが異なる場合は、-Wl,-dynamic-linker,/pathをMakefileのLDFLAGSに追加できます(実際のパスでは/pathを明らかに置き換えてください)。

関連する問題