2012-08-09 6 views
3

NDK를 사용하여 Android에 C 프로그램을 포팅합니다. 사용 가능한 프로그램에 따라 uuid.h 또는 uuid/uuid.h 라이브러리가 사용됩니다. 프로그램을 컴파일 할 때 오류 메시지 uuid.h: No such file or directory을 제공하십시오.Android NDK 프로젝트에 uuid.h 포함

저는 NDK가 처음이에요. 그래서 문제가 뭔지 잘 모르겠습니다. Windows에서 cygwin을 사용하고 있습니다. 컴퓨터에 uuid.h 라이브러리가 없거나 Android가 지원하지 않습니다. 해결 방법이 있습니까 - 어떻게 든 컴파일러 설정에 포함시킬 수 있습니까?

char  *s; 
uuid_t uu; 
uuid_create(&uu, NULL); 
uuid_to_string(&uu, &s, 0); 

은 아마도 내가 내 자신의 C 코드와 함께이 동작을 에뮬레이트 수 :

마지막으로, 프로그램은 그래서 같은 라이브러리를 사용?

미리 도움 주셔서 감사합니다.

답변

6

uuid.h은 NDK의 일부가 아닙니다. 실행하여 확인할 수 있습니다 find /opt/android-ndk-r8b/ -name uuid.h

아마도 필요한 코드를 AOSP에서 가져올 수 있습니다. 마스터 브랜치에 external/e2fsprogs/lib/uuid/uuid.h이 있습니다.

+0

도움을 주셔서 감사합니다! 나는 그 코드를 프로젝트에 통합해야한다고 생각합니다. 그렇게하는 가장 좋은 방법에 대한 조언이 있습니까? – yellow

+0

AOSP에서 직접 코드를 가져옵니다. Android.mk 파일이 이미 들어있는'uuid' 폴더 만 있으면됩니다. 행운을 빕니다. – Frohnzie

+0

안녕하세요. 나는 GIT를 사용하여 폴더를 가져 왔고, 그것을 프로젝트에 추가하고 ndk-build를 실행했다. 그것은 "libext2_uuid.so"파일을 출력합니다; 이를 통합하려면 메소드를 참조하고 .so를 Android.mk 소스 목록에 포함시키기 위해 헤더 파일 "uuid.h"를 만들어야합니까? – yellow

0

기사 UUIDs and Linux: Everything you ever need to know 은 프로그램이 (/proc/sys/kernel/random/uuid)를 읽을 파일이 아닌 라이브러리를 호출해야합니다 있지만,

$ cat /proc/sys/kernel/random/uuid 
eaf3a162-d770-4ec9-a819-ec96d429ea9f 

명령은 실제로 안드로이드에서 작동하여 제안합니다.

그래서 당신은 String getStringFromFile(String filePath)here,

getStringFromFile("/proc/sys/kernel/random/uuid") 

당신은, 예를 들어, 로그에 인쇄 할 수있는 UUID 돌아갑니다 걸릴 경우 :

D/~~~  (5065): uuid=418ebd25-4f6e-4431-b31e-784703ea6093 

은 (삼성 GS4에 그것을 실행)

+0

Android 기기에서 실제로 작동하는지 확인한 사람이 있습니까? –

+0

코드에서 사용했습니다. – 18446744073709551615