2015-01-26 3 views
0

android x-86 용 openssl을 사용하여 c 프로그램을 컴파일하려고 할 때 다음과 같은 문제가 있습니다.Android 용 openssl과 함께 c 프로그램을 컴파일

setenv-android.sh

을 나는 다음과 같은 환경이 스크립트를 실행 한 후 다음 스크립트를 사용하여 다음과 같이 나는 환경 변수를 설정합니다.

./setenv-android_x86.sh 
find: /dev/fd/3: Not a directory 
find: /dev/fd/4: Not a directory 
Error: FIPS_SIG does not specify incore module. Please edit this script. 
ANDROID_NDK_ROOT: /opt/android-ndk-r9d-x86 
ANDROID_ARCH: arch-x86 
ANDROID_EABI: x86-4.6 
ANDROID_API: android-18 
ANDROID_SYSROOT: /opt/android-ndk-r9d-x86/platforms/android-18/arch-x86 
ANDROID_TOOLCHAIN: /opt/android-ndk-r9d-x86/toolchains/x86-4.6/prebuilt/darwin-x86_64/bin 
FIPS_SIG: 
CROSS_COMPILE: i686-linux-android- 
ANDROID_DEV: /opt/android-ndk-r9d-x86/platforms/android-18/arch-x86/usr 

그러나 나는 다음과 같은 오류를 얻을 다음 명령을 사용하여 컴파일 할 때 :

pwd /opt/android-ndk-r9d-x86/bin

./i686-linux-android-gcc Test.c -o test -lcrypto 

fatal error: openssl/conf.h: No such file or directory 

나는 파일이 많은에서 사용할 수 있습니다 참조하려면 openssl/conf.h에 대한 위치 장소 :
는/usr/LO :

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/openssl/conf.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/openssl/conf.h /data/local/arm/ssl/include/openssl/conf.h /data/local/ssl/include/openssl/conf.h /openssl/include/openssl/conf.h /openssl-1.0.1e/include/openssl/conf.h /openssl-1.0.1g/include/openssl/conf.h /opt/local/include/openssl/conf.h /usr/include/openssl/conf.h /usr/local/include/openssl/conf.h /usr/local/ssl/android-14/include/openssl/conf.h /usr/local/ssl/android-18/include/openssl/conf.h
/usr/local/ssl/android-18-x86/include/openssl/conf.h /usr/local/ssl/include/openssl/conf.h

나는 적절한 경로가이 생각 cal/ssl/android-18-x86/include/openssl/conf.h
운이없는 -L 옵션을 사용해 보았습니다.
-L/usr/지방/SSL/안드로이드-18-86은 /는/

아무도 경로가 제대로이 문제를 해결하는 방법에 대한 설정을 설명하십시오 할 수 있습니다. (결국 코드가 gcc로 올바르게 컴파일되므로 C 코드에 문제가 없습니다.)

+0

"-I/usr/local/ssl/android-18-x86/include /"를 사용해 보셨습니까? -L은 라이브러리 탐색 경로에 디렉토리를 추가하기위한 것이고, -I (대문자 i)는 include 탐색 경로에 디렉토리를 추가하기위한 것입니다. – crazymaik

+0

나는 그것을 시도했다 - 나는 일하지 않았다. 이전보다 많은 오류가 있었지만 – user340

답변

1

Android NDK를 사용하여 코드를 컴파일하면 안드로이드 용으로 컴파일해야하는 모든 것을 배치하여 "가상"컴파일 환경을 만듭니다. $ {ANDROID_SYSROOT} 디렉토리.

나열된 디렉토리가 해당 sysroot 외부에 있으므로 빌드 시스템에서 사용할 수 없으므로 오류가 발생합니다. Android 용 OpenSSL을 설치하고 거기에 결과 헤더 및 바이너리를 저장해야합니다. 당신은 이것을 돕기 위해 guide을 따를 수 있습니다.

관련 문제