一個插入式兩個檔案庫,用於在檔案系統上尋找目前可執行檔和目前模組。
支援的平台:
視窗
Linux
蘋果
iOS系統
安卓
QNX中微子
自由BSD
網路BSD
蜻蜓BSD
太陽作業系統
開放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)
來檢索路徑
添加一個終端NUL
字符, path[length] = '�';
這是範例的輸出:
$ 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