Tôi đang cố gắng xây dựng libraw làm thư viện được chia sẻ trên Android. Dường như lib quá phức tạp để sử dụng với Android.mk, hoặc tốt hơn: tôi không có khả năng làm điều đó.Xây dựng thư viện gốc với cánh tay android toolchain độc lập
Tôi đã thử tuyến đường sử dụng chuỗi công cụ độc lập từ NDK, nhưng tôi gặp khó khăn khi biên soạn lib này.
Đây là đường dẫn tôi thực hiện để biên dịch lib. Vui lòng chỉ ra nếu tôi đang thực hiện các lỗi rõ ràng:
- Tôi đã tải xuống ndk.
- chạy:
make-standalone-toolchain.sh
- Thư mục của chuỗi công cụ độc lập như mục đầu tiên trong số
PATH
. - Ran
./configure
với--host=arm-linux-androideabi
. Điều này đã thành công - Ran
make
, tại đây nó bị lỗi rất nhanh.
LibRaw-0.14.4$ make depbase=`echo internal/dcraw_common.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\ /bin/bash ./libtool --tag=CXX --mode=compile arm-linux-androideabi-g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.14.4\" -DPACKAGE_STRING=\"LibRaw\ 0.14.4\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://www.libraw.org\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I/usr/local/include -g -O2 -MT internal/dcraw_common.lo -MD -MP -MF $depbase.Tpo -c -o internal/dcraw_common.lo internal/dcraw_common.cpp &&\ mv -f $depbase.Tpo $depbase.Plo libtool: compile: arm-linux-androideabi-g++ -DPACKAGE_NAME=\"LibRaw\" -DPACKAGE_TARNAME=\"libraw\" -DPACKAGE_VERSION=\"0.14.4\" "-DPACKAGE_STRING=\"LibRaw 0.14.4\"" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://www.libraw.org\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I/usr/local/include -g -O2 -MT internal/dcraw_common.lo -MD -MP -MF internal/.deps/dcraw_common.Tpo -c internal/dcraw_common.cpp -fPIC -DPIC -o internal/.libs/dcraw_common.o internal/dcraw_common.cpp: In member function 'void LibRaw::read_shorts(ushort*, int)': internal/dcraw_common.cpp:119: error: 'swab' was not declared in this scope internal/dcraw_common.cpp: In member function 'void LibRaw::write_ppm_tiff()': internal/dcraw_common.cpp:9235: error: 'swab' was not declared in this scope make: *** [internal/dcraw_common.lo] Error 1
tôi nghi ngờ thông báo lỗi này là hữu ích ở đây tại stackoverflow, nhưng tôi lại tự hỏi nếu tôi nên đã áp dụng một số cờ bổ sung hoặc cấu hình để có được điều này để làm việc?
Lưu ý rằng tôi có thể biên dịch thành công lib này nếu chỉ biên dịch cho hệ thống của tôi mà không cần crosscompiling. (linux 32bit).
Khi tôi tìm hướng dẫn để xây dựng GDAL cho Android (here), nó sử dụng cài đặt bổ sung là LIBS="-lsupc++ -lstdc++"
. Điều này liên kết các ngoại lệ STL và C++? Tuy nhiên, khi tôi đặt những trước khi chạy tôi configure
tôi nhận được ngay lập tức các lỗi như:
configure:3018: checking whether the C++ compiler works configure:3040: arm-linux-androideabi-g++ conftest.cpp -lsupc++ -lstdc++ >&5 /tmp/android-chain/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: cannot find -lsupc++ collect2: ld returned 1 exit status
Vì vậy, tôi là một chút khó khăn. Ai đó là một ý tưởng?
Hi @Peterdk bạn có thể cho tôi biết nơi bạn đã thực hiện chức năng tăm bông không? hay bạn tự viết nó? – asloob
Xin chào, tôi nghĩ rằng tôi chỉ googled cho nó. Tôi không tự viết. Có lẽ cũng kết hợp nó với một tìm kiếm cho crystax. – Peterdk
Cảm ơn! Tôi tìm thấy nó. – asloob