2011-11-14 36 views
9

Tôi gặp vấn đề với mới nhất của Android NDK:vấn đề với Android NDK-7 và AWK

[email protected]:~$ ndk-build 
/home/ligi/bin/android-ndk/prebuilt/linux-x86/bin/awk: 1: ELF: not found 
/home/ligi/bin/android-ndk/prebuilt/linux-x86/bin/awk: 4: Syntax error: word unexpected (expecting ")") 
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !  
/home/ligi/bin/android-ndk/build/core/init.mk:258: *** Android NDK: Aborting. . Stop. 

[email protected]:~$ `echo $HOST_AWK --v` 
GNU Awk 3.1.7 

Tôi đang trên cổ ubuntu kiến ​​hoàn toàn ra khỏi những ý tưởng và từ khóa tốt cho các tìm kiếm

Trả lời

33

Tôi cũng có vấn đề này và tìm thấy trang web của Nhật Bản này với vấn đề tương tự:

http://d.hatena.ne.jp/yohpapa/20111113/1321198570

tôi hy vọng tôi bối rối ra những thứ Google dịch một cách chính xác - trong mọi trường hợp, về cơ bản trong NDK mới cài đặt, tìm thư mục này:

..../android-ndk-r7/prebuilt/linux-x86/bin 

và đổi tên các tập tin "awk" có một cái gì đó khác như "awk_"

Tôi đã làm điều này và ndk_build hiện đang làm việc cho tôi. Nếu tôi đọc các tập tin thực hiện ngay có một tập tin gọi là init.mk mà thay thế HOST_AWK của bạn với giá trị dựng sẵn nếu nó tìm thấy nó ... để đổi tên tập tin awk có mặc định trở lại con diều hâu của bạn.

Hy vọng rằng sẽ giúp

Kibi

+1

Điều thú vị. Làm việc cho tôi quá, cảm ơn! – simonescu

+0

Giải pháp này áp dụng khi bạn đang chạy phiên bản 32 bit của Linux. Vấn đề này không xảy ra trên bản phân phối 64 Linux. – Samuel

+3

Lưu ý rằng trên Windows, tương đương làm việc cho tôi, ngoại trừ tôi phải đổi tên tệp awk.exe bên trong thư mục dựng sẵn/windows/bin. – aardvarkk

6

Vấn đề là thực thi ndk/prebuild/linux-x86/awk được biên soạn cho x86_64, nó không chạy trong một 32 bit kernel

+0

Ah, cảm ơn vì đã giải thích rằng Joel – Kibi

1
  1. Cập nhật địa phương của bạn awk.
  2. Loại bỏ sự lúng túng trong android-ndk.

Điều này sẽ giải quyết được sự cố.

0

Tôi gặp sự cố với các phiên bản awk khác nhau trên cửa sổ. Thay đổi này sử dụng phiên bản Cygwin của awk từ một giao diện điều khiển Cygwin và phiên bản dựng sẵn từ một bàn điều khiển dos.

Add để init.mk:

ifeq ($(HOST_OS),cygwin) 
     HOST_AWK := /bin/awk 
endif 
1

Đến <ndk_dir>\build\core\ của bạn và mở init.mk trong một trình soạn thảo văn bản, ví dụ notepad

Thay thế dòng sau

HOST_AWK := $(wildcard $(HOST_PREBUILT)/awk$(HOST_EXEEXT)) 

với

ifeq ($(HOST_OS),cygwin) 
     HOST_AWK := $(wildcard $(HOST_PREBUILT)/gawk$(HOST_EXEEXT)) 
else 
     HOST_AWK := $(wildcard $(HOST_PREBUILT)/awk$(HOST_EXEEXT)) 
endif 

@Tod: Cảm ơn, tôi sử dụng gợi ý của bạn ở đây

đó làm việc.

1

Tôi gặp sự cố tương tự chạy từ nhật thực trên các cửa sổ có Cygwin và NDK8.

tôi đã có thêm HOST_AWK như là một biến môi trường trong thuộc tính dự án -> c/C++ Build -> Môi trường với giá trị /cygdrive/[cygwin installdir]/bin/gawk

(Cũng như cần phải thiết lập các c/C++ xây dựng lệnh để bash -c ndk-build)

Các vấn đề liên quan