파일 시스템에서 현재 실행 파일과 현재 모듈을 찾기 위한 드롭인 두 파일 라이브러리입니다.
지원되는 플랫폼:
윈도우
리눅스
스코틀랜드 사람
iOS
기계적 인조 인간
QNX 뉴트리노
FreeBSD
NetBSD
드래곤플라이 BSD
SunOS
오픈BSD
whereami.h
와 whereami.c
빌드에 추가하고 시작하세요. (컴파일 사용자 정의 참조)
wai_getExecutablePath()
포함하는 실행 파일의 경로를 반환합니다.
wai_getModulePath()
둘러싸는 모듈의 경로를 반환합니다.
사용 예:
첫 번째 호출 int length = wai_getExecutablePath(NULL, 0, NULL);
경로의 길이를 검색하려면
path = (char*)malloc(length + 1);
경로를 검색하려면 wai_getExecutablePath(path, length, &dirname_length)
다시 호출하세요.
path[length] = '�';
인 터미널 NUL
문자를 추가합니다.
예제의 출력은 다음과 같습니다.
$ make -j -C _gnu-make $ cp ./bin/mac-x86_64/library.dylib /tmp/ $ ./bin/mac-x86_64/executable --load-library=/tmp/library.dylib executable path: /Users/gregory/Projects/whereami/bin/mac-x86_64/executable dirname: /Users/gregory/Projects/whereami/bin/mac-x86_64 basename: executable module path: /Users/gregory/Projects/whereami/bin/mac-x86_64/executable dirname: /Users/gregory/Projects/whereami/bin/mac-x86_64 basename: executable library loaded executable path: /Users/gregory/Projects/whereami/bin/mac-x86_64/executable dirname: /Users/gregory/Projects/whereami/bin/mac-x86_64 basename: executable module path: /private/tmp/library.dylib dirname: /private/tmp basename: library.dylib library unloaded
다음 매크로를 정의하여 라이브러리의 동작을 사용자 정의할 수 있습니다.
WAI_FUNCSPEC
WAI_PREFIX
WAI_MALLOC
WAI_REALLOC
WAI_FREE
_win-vs14/
폴더에 Visual Studio 2015 솔루션이 있습니다.
_gnu-make/
폴더에 GNU Make 3.81 MakeFile
이 있습니다:
$ make -j -C _gnu-make/
명령줄에서 컴파일하려면 위를 참조하세요. 그렇지 않으면 _mac-xcode/
폴더에 Xcode 프로젝트가 있습니다.
_ios-xcode/
폴더에 Xcode 프로젝트가 있습니다.
명령줄에서 컴파일하고 SSH를 통해 탈옥된 장치에 배포하려는 경우 다음을 사용하세요.
$ make -j -C _gnu-make/ binsubdir=ios CC="$(xcrun --sdk iphoneos --find clang) -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -arch armv7 -arch armv7s -arch arm64" postbuild="codesign -s 'iPhone Developer'"
Android NDK를 설치하고 $NDK_ROOT
환경 변수가 NDK 경로를 가리켜야 합니다. 예: export NDK_ROOT=/opt/android-ndk
(후행 /
문자 없음).
다음으로, 쉬운 방법은 다음 명령을 사용하여 독립형 Android 툴체인을 만드는 것입니다.
$ $NDK_ROOT/build/tools/make_standalone_toolchain.py --arch=arm64 --api 21 --install-dir=/tmp/android-toolchain
이제 다음을 실행하여 예제를 컴파일할 수 있습니다.
$ make -j -C _gnu-make/ platform=android architecture=arm64 CC=/tmp/android-toolchain/bin/aarch64-linux-android-gcc CXX=/tmp/android-toolchain/bin/aarch64-linux-android-g++
APK에서 바로 페이지 정렬 라이브러리를 로드하는 것이 지원됩니다. 테스트하려면 다음을 사용하십시오.
$ zip -Z store app bin/android/library.so $ zipalign -v -f -p 4 ./app.zip ./app.apk
그런 다음 bin/android/executable
및 app.apk
Android 장치에 복사하고 실행합니다.
$ ./executable --load-library=$PWD/app.apk!/bin/android/library.so