Pustaka dua file drop-in untuk menemukan file yang dapat dieksekusi saat ini dan modul saat ini pada sistem file.
Platform yang didukung:
jendela
Linux
Mac
iOS
Android
QNX Neutrino
FreeBSD
NetBSD
Capung BSD
matahari OS
OpenBSD
Masukkan saja whereami.h
dan whereami.c
ke dalam build Anda dan mulailah. (lihat juga menyesuaikan kompilasi)
wai_getExecutablePath()
mengembalikan jalur executable terlampir
wai_getModulePath()
mengembalikan jalur modul terlampir
Contoh penggunaan:
panggilan pertama int length = wai_getExecutablePath(NULL, 0, NULL);
untuk mengambil panjang jalan
mengalokasikan buffer tujuan dengan path = (char*)malloc(length + 1);
panggil wai_getExecutablePath(path, length, &dirname_length)
lagi untuk mengambil jalurnya
tambahkan karakter terminal NUL
dengan path[length] = '�';
Berikut ini output dari contohnya:
$ 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
Anda bisa mengkustomisasi perilaku perpustakaan dengan mendefinisikan makro berikut:
WAI_FUNCSPEC
WAI_PREFIX
WAI_MALLOC
WAI_REALLOC
WAI_FREE
Ada solusi Visual Studio 2015 di folder _win-vs14/
.
Ada MakeFile
GNU Make 3.81 di folder _gnu-make/
:
$ make -j -C _gnu-make/
Lihat di atas jika Anda ingin mengkompilasi dari baris perintah. Kalau tidak, ada proyek Xcode yang terletak di folder _mac-xcode/
.
Ada proyek Xcode yang terletak di folder _ios-xcode/
.
Jika Anda lebih suka mengkompilasi dari baris perintah dan menerapkan ke perangkat yang sudah di-jailbreak melalui SSH, gunakan:
$ 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'"
Anda harus menginstal Android NDK, dan mengarahkan variabel lingkungan $NDK_ROOT
ke jalur NDK: misalnya, export NDK_ROOT=/opt/android-ndk
(tanpa karakter /
tambahan).
Selanjutnya cara mudahnya adalah membuat toolchain Android standalone dengan perintah berikut:
$ $NDK_ROOT/build/tools/make_standalone_toolchain.py --arch=arm64 --api 21 --install-dir=/tmp/android-toolchain
Sekarang Anda dapat mengkompilasi contoh dengan menjalankan:
$ 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++
Memuat pustaka yang selaras dengan halaman langsung dari APK didukung. Untuk menguji, gunakan yang berikut ini:
$ zip -Z store app bin/android/library.so $ zipalign -v -f -p 4 ./app.zip ./app.apk
Kemudian salin bin/android/executable
dan app.apk
ke perangkat Android Anda dan luncurkan:
$ ./executable --load-library=$PWD/app.apk!/bin/android/library.so