通过链接由android ndk

时间:2016-06-01 14:24:47

标签: c++ gcc android-ndk g++ googletest

我有一个庞大的c ++代码库,有许多库依赖项,并且有一些Android.mk配置文件可以通过链接所有来构建一个单独的libGame.so。我在android项目上成功使用了这个libGame.so。

我使用Visual Studio 2015作为此c ++代码库的IDE,并成功集成了GoogleTest并能够在Windows上运行单元测试。现在,我想在MAC-OS-X上运行我的单元测试,除了ndk-build过程之外,创建用于使用g ++编译器编译整个项目的make文件似乎很麻烦。我知道hat g ++编译器可以链接" .so"文件也作为库。是否可以链接任何" .so"由android ndk构建的文件到g ++编译器?

我试图为我的一个名为" LineSplitterTest"的单元测试类运行以下命令。

g++ -I/Users/fuat/GoogleTest/googletest/include \
-I/Users/fuat/Development/Game/Sources/App/PlusGame \
-I/Users/fuat/Development/Game/Sources/AndroidNativeLib \
-I/Users/fuat/Development/Game/Sources/AndroidNativeLib/Libs/jsoncpp/include \
testmain.cpp \
/Users/fuat/Development/Game/Sources/App/UnitTest/LineSplitterTest.cpp \
libgtest.a libgtest_main.a \
-L /Users/fuat/Development/Game/Sources/App/UnitTest \
-lGame \
-o LineSplitterTest

但编译器会忽略我的.so文件,并显示以下警告消息:

ld: warning: ignoring file 
/Users/fuat/Development/Game/Sources/App/UnitTest/libGame.so, file 
was built for unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ) 
which is not the architecture being linked (x86_64)

我已将APP_ABI选项更改为" x86"并构建了另一个libGame.so但没有任何改变。我无法设置" APP_ABI"选项" x86_64"因为我的google_breakpad依赖项只支持" x86"和" armeabi"。

简而言之,我想使用" .so"由ndk-build进程生成的文件作为g ++编译器上的库。如果你们有任何建议,我真的很感激。

0 个答案:

没有答案