2016-03-11 11 views
7

Tôi đang cố gắng để xây dựng một thư viện với android ndk-11 và tôi nhận được một lỗi mối liên kết:NDK 11 mối liên kết được điều trị cảnh báo là lỗi

arm-linux-androideabi/bin/ld: error: treating warnings as errors

Tôi không nhận được lỗi này nếu tôi sử dụng ndk-r10e.

Chạy ndk-build với V = 1, tôi thấy rằng -Wl,--fatal-warnings đang được chuyển tới trình liên kết. Tôi đã thử thêm LOCAL_LDFLAGS:=-Wl,--no-fatal-warnings vào tệp Android.mk của mình và tôi có thể thấy trong đầu ra liên kết rằng thực tế nó được chuyển đến trình liên kết nhưng nó được chuyển qua trước-Wl,--fatal-warnings, vì vậy nó đang bị bỏ qua.

Cảnh báo đến từ thư viện của bên thứ 3, vì vậy tôi không thể biên dịch lại nó để sửa các cảnh báo (tất cả đều là 'di chuyển đề cập đến cảnh báo' bị loại bỏ). Tôi đã luôn luôn nhìn thấy những cảnh báo này và chưa bao giờ gặp bất kỳ vấn đề gì.

Có ai biết cách nói cho trình liên kết ndk-11 không để coi cảnh báo là lỗi không?

Trả lời

12

Tôi đã tìm ra điều này khi tôi đang viết nó, vì vậy tôi nghĩ tôi sẽ chia sẻ giải pháp.

<NDK_ROOT>/build/core có một loạt tệp .mk được sử dụng khi chạy ndk-build. Bên trong build-binary.mk, có một vài kiểm tra mới (không có giấy tờ) cho các biến mà bạn có thể xác định. Đối với trường hợp cụ thể này, có khối sau:

# We enable fatal linker warnings by default. 
# If LOCAL_DISABLE_FATAL_LINKER_WARNINGS is true, we don't enable this check. 
ifneq ($(LOCAL_DISABLE_FATAL_LINKER_WARNINGS),true) 
    LOCAL_LDFLAGS += -Wl,--fatal-warnings 
endif 

Thêm vào LOCAL_DISABLE_FATAL_LINKER_WARNINGS=true vào tệp .mk của tôi đã làm cho lỗi biến mất.

các thứ khác được xác định trong các tệp này, vì vậy nếu bạn gặp lỗi xây dựng lạ đột ngột, hãy xem trong đó để xem có điều gì mới được bật hay không.

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