我想从外部文件目录动态加载共享库。
我创建了库并在linux上测试它,它的工作原理。 编译:gcc -fPIC -shared -static-libstdc ++ -static-libgcc test_lib.cpp constructor.cpp -o test.so
但是当我在android ndk中使用它时,我得到运行时错误: dlopen失败:未找到库“libc.so.6”。
我怎么解决?我正在使用模拟器
答案 0 :(得分:2)
你不能在android上使用为普通Linux构建的库 - 它仍然链接到Android上不可用的共享libc.so.6
。 (您无法静态链接共享库,请参阅例如https://stackoverflow.com/a/6637842/3115956。)
您需要使用NDK编译器针对Android C运行时库构建库。
如果您喜欢冒险,可以尝试强制它将C运行时静态链接到您的库中,方法是将其链接到libc.a
而不是libc.so
,但我不确定是否导致其他问题。 (可以在android上运行为普通linux构建的可执行文件,假设它们是用-static
构建的,但我不确定它对共享库的效果如何。)