光写一个android linux的native程序 简单 设置平台android 然后cpu ARM64就可以了。但是有个问题 。。我想和我的C语言组合起来完成某些事情 。然后考虑用C语言编译成.a这种静态的库给cgo用。cgo用的时候报错。报一个
ld error 这种 然后 libnumber.a(number.o): not an ELF file 这种提示(文件名我用的网上一个帖子的命名)。为什么连接.a
文件会报不是个ELF文件的错误呢 。。后来想算了。用动态的吧。。然后动态的编译过了 。。拿到Android去跑的时候 。
library "libxxxxxx.so" not found: needed by main executable 有一直报这个错误 。程序加载不进这个so。我自己写个程序dlopen去加载都好好的 。。哎。有没有朋友遇到过这个问题的呢 。望告知。感谢。
更多评论
gradle 打包成apk的时候,不是一个简单的压缩包;它会根据一些配置文件把指定的资源放在指定的路径。所以你必须在一些配置文件中增加相应的规则。
这个问题可以简单地验证,直接把apk解压,里面是没有你的那个go编译的so文件的。
#1
我go语言直接编译成linux下的可执行文件。就一个文件 。然后丢到收i就里面 。chmod 777 xxx 。ELF格式的 。直接可以执行 。只是在导出函数的时候。感觉导出的函数有点不对。。可以在别的so里面调用dlopen和dlsym可以得到函数地址 。但是这个地址里面的内容不是汇编代码 所以我调用这个地址死了
#2