一回のCMake NDKコンパイルを覚えます
2384 ワード
今回出会った問題は、オープンソースベースのcライブラリlibfluidsynthで開発し、アンドロイドプラットフォームのsoファイルを構築することです.
倉庫のwikiを調べると、linux、windows、macosのコンパイル方法しか話されていないことがわかりました.
いろいろ試して数日、windowsの下でクロスコンパイルが難しすぎるような気がします...linuxに行く感じ
私のunity党はvimもあまり使ったことがありませんが、どうしてlinuxを使うのですか.やはり彼らにもっと上手にしてもらいたいと思っていた.
初めて来たばかりなので、やはり問題を解決しなければなりませんね.
まず、仮想マシンをインストールし、centos 7をインストールしました.いくつかの問題が発生しました.
環境変数は常に一致していないので、端末を終了するとファイルをリフレッシュしなければなりません.その後etc/bashrcで構成されていることに気づき、なぜネット上でそう言っていないのか分かりません.
次にwin 7との共有フォルダで、まずvboxに共有フォルダを設定し、mount-t vboxsf「共有名」「ローカルマッピングパス」
ちょうど、libfluidsynth for androidのライブラリコードが新しいので、引っ張ってみると、mkファイルがなくて、使っているcmakeがあって、そこでcmakeをインストールしてndkをインストールして、このネット上のチュートリアルは多くて、言わないでください
それからクロスコンパイルはtoolchainファイルを書くと言って、模索して直して、コンパイルできるように編んで、androidプラットフォームかどうか分かりません.の
そこでまたandroid studioを装ってログを見て、騒いでいるのは今管理が厳しくて、何の利用可能なミラーもなくて、asは更新できませんt.t.まあ、周末に家に帰ってまたどのように构筑するかを见て、1つのvultrのサーバーを借りてSSRで组んで、本当に使いやすくて、いくつかの久しぶりのウェブサイトも再び见ることができました.の2010年に戻って、その时のウェブサイトは喜びに満ちていました...話が遠くなった.
やっとandroid studioが更新できて、logを見て、unityは直接dllnotfoundを報告して、必然的にプラットフォームが間違っています、file soは見て、x 86_64の...
その后、ついにオンラインでNDKで提供されたtoolchainファイルを见て、试して、やっとできて、Unityで呼び出しに成功しました...
ちなみにunityではc#がandroidのsoファイルを直接呼び出すことができ、jarで包装しなければならないわけではありません.
また、アンドロイドのsoはdllimportの場合、名前の前のlibを外す
工程目録にビルド目録を作って、このshを入れて運行して、OK~~~
倉庫のwikiを調べると、linux、windows、macosのコンパイル方法しか話されていないことがわかりました.
いろいろ試して数日、windowsの下でクロスコンパイルが難しすぎるような気がします...linuxに行く感じ
私のunity党はvimもあまり使ったことがありませんが、どうしてlinuxを使うのですか.やはり彼らにもっと上手にしてもらいたいと思っていた.
初めて来たばかりなので、やはり問題を解決しなければなりませんね.
まず、仮想マシンをインストールし、centos 7をインストールしました.いくつかの問題が発生しました.
環境変数は常に一致していないので、端末を終了するとファイルをリフレッシュしなければなりません.その後etc/bashrcで構成されていることに気づき、なぜネット上でそう言っていないのか分かりません.
次にwin 7との共有フォルダで、まずvboxに共有フォルダを設定し、mount-t vboxsf「共有名」「ローカルマッピングパス」
ちょうど、libfluidsynth for androidのライブラリコードが新しいので、引っ張ってみると、mkファイルがなくて、使っているcmakeがあって、そこでcmakeをインストールしてndkをインストールして、このネット上のチュートリアルは多くて、言わないでください
それからクロスコンパイルはtoolchainファイルを書くと言って、模索して直して、コンパイルできるように編んで、androidプラットフォームかどうか分かりません.の
そこでまたandroid studioを装ってログを見て、騒いでいるのは今管理が厳しくて、何の利用可能なミラーもなくて、asは更新できませんt.t.まあ、周末に家に帰ってまたどのように构筑するかを见て、1つのvultrのサーバーを借りてSSRで组んで、本当に使いやすくて、いくつかの久しぶりのウェブサイトも再び见ることができました.の2010年に戻って、その时のウェブサイトは喜びに満ちていました...話が遠くなった.
やっとandroid studioが更新できて、logを見て、unityは直接dllnotfoundを報告して、必然的にプラットフォームが間違っています、file soは見て、x 86_64の...
その后、ついにオンラインでNDKで提供されたtoolchainファイルを见て、试して、やっとできて、Unityで呼び出しに成功しました...
ちなみにunityではc#がandroidのsoファイルを直接呼び出すことができ、jarで包装しなければならないわけではありません.
また、アンドロイドのsoはdllimportの場合、名前の前のlibを外す
#!/bin/bash
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
if [[ “$@“ =~ "-d" ]];then
echo "----------------------------cmake debug----------------------------"
cmake -DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_PATH/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=$ANDROID_NDK_PATH \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_PLATFORM=android-21 \
-DANDROID_STL=c++_shared \
..
else
echo "----------------------------cmake release----------------------------"
cmake -DDEBUG=NO -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_PATH/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=$ANDROID_NDK_PATH \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_PLATFORM=android-21 \
-DANDROID_STL=c++_shared \
..
fi
make
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
工程目録にビルド目録を作って、このshを入れて運行して、OK~~~