我正在尝试从c文件(不是由我编写)构建可执行文件,以便我可以在手机上使用它。 我正在使用直接来自为arm64构建的Android NDK(使用Clang)的工具链。 c文件需要在makefile中表示libpthread librtlsdr libmysqlclient,所以我在我的工具链sysroot目录下载了这些库的arm64版本。第一个问题:这是正确的做法吗? 无论如何,在执行此操作并执行make之后,它无法说它找不到libpthread.so.0和libpthread_nonshared.a。
为了解决这个问题,我在sysroot文件夹中将它想要的文件从libc6 arm 64包中复制(不仅是上面写的两个,还有许多其他需要的级联):这样“make”似乎工作正常但是一旦我在我的设备中推送它,使用它需要的库,并运行它,我得到一个运行时错误说:
在“/data/local/tmp/TEMP/libc6.so.6”中用符号“_res”引用的版本索引= 32770找不到verneed / verdef
在这种情况下,问题应该是libc6,但我无法弄清楚如何解决这个问题。 这个与我下载的libpthread相关,所以libc6包可能不适合Android。
所以真正的问题是:有没有办法摆脱我刚才使用Android中包含的pthread提到的第一个错误? 我希望我只是错过了某些东西或以错误的方式使用。
由于
答案 0 :(得分:0)
不,这不是您期望为Android构建可执行文件的方式。您可以使用NDK工具链或替代工具链,如下所述:Cross compiling static C hello world for Android using arm-linux-gnueabi-gcc。