我想在编译自己的共享库时将现有的共享库(FlashRuntimeExtensions.so)链接到我的C代码。但无论我尝试什么,我总会得到同样的错误;该文件的格式错误。有没有人知道如何解决这个问题?
这是我的编译命令:
$ g++ -Wall ane.c FlashRuntimeExtensions.so -o aneObject
FlashRuntimeExtensions.so: could not read symbols: File in wrong format
collect2: ld gaf exit-status 1 terug
答案 0 :(得分:1)
您的命令行尝试使用您的发行版中提供的本机g ++生成x86代码并将其链接到ARM代码。
这不起作用。使用此处提供的Android NDK:http://developer.android.com/tools/sdk/ndk/index.html
NDK包含一组交叉工具链(编译器,链接器等),可以在Linux,OS X和Windows(带Cygwin)平台上生成本机ARM二进制文件。
答案 1 :(得分:0)
一般情况下,.so
将使用-l
链接。
例如,我们使用pthread -lpthread
。
gcc sample.c -o myoutput -lpthread
但是根据@ chill的陈述,你在命令中所做的只是正确的。
我建议您参考以下链接。
答案 2 :(得分:0)
它应该是架构不匹配。我曾经遇到过这个问题,我已经通过在同一个目标平台上构建lib来解决它,这很明显。如果您使用的是Linux或类似操作系统的Unix,您可以通过file命令看到它,如果您使用的是Windows,则可以看到使用Dependency Walker。您需要确保所有库与架构匹配。