在编译我自己的共享库时,我希望将现有的共享库(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发布于 2012-12-13 18:15:58
命令行会尝试生成x86代码,并使用发行版中提供的本机g++将其链接到ARM代码。
这是行不通的。使用此处提供的Android NDK:http://developer.android.com/tools/sdk/ndk/index.html
NDK包括一组跨工具链(编译器、链接器等)。可以在Linux、OS和Windows (带有Cygwin)平台上生成本地ARM二进制文件。
发布于 2012-12-13 17:05:41
一般情况下,将使用-l链接.so。
例如,我们使用的pthread -lpthread。
gcc sample.c -o myoutput -lpthread
但是根据@chill的声明,您在命令中所做的只是正确的。
我建议你参考下面的链接。
发布于 2013-04-22 16:47:38
这应该是架构不匹配。我曾经遇到过这个问题,我通过在相同的目标平台上构建库来解决它,这是显而易见的。如果你使用linux或Unix之类的操作系统,你可以通过file命令看到这一点,如果你使用windows,你可以使用Dependency Walker看到它。您需要确保所有的库都与体系结构匹配。
https://stackoverflow.com/questions/13856308
复制相似问题