当前位置: 首页 > 知识库问答 >
问题:

利伯达尔。so android错误:无法加载库“libgdal.so.1”

丁志勇
2023-03-14

我的问题如下:我已经成功地构建了GDAL 1.10.1使用Android工具链(CC=i686-linux-android-gcc, CXX=i686-linux-android-c),产生以下输出库libgdal. alibgdal.lalibgdal.lailibgdal.solibgdal.so.1libgdal.so.1.17.1在输出文件夹. libs(在下面,我将此文件夹称为$GDAL_LIB_PATH)。

我正在尝试在Windows上使用Qt 5.4构建一个简单的Android应用程序(一个名为TestAndroid的带有QPushButton的简单小部件应用程序)。如果我不使用GDAL,一切都很好,我可以在Android模拟器上运行我的应用程序,适用于所有可用的平台:x86armeabiarmeabi-v7

尽管如此,如果我尝试使用GDAL(例如,在应用程序初始化时只需调用GDALAllRegister()),然后链接到libgdal。因此应用程序崩溃,出现以下错误:

e/art(1614): dlopen("/data/app/org.qtproject.example.TestAndroid-1/lib/x86/libTestAndroid.so",RTLD_LAZY)失败: dlopen失败:无法加载"libTestAndroid.so"所需的库"libgdal.so.1";引起by库"libgdal.so.1"未找到

我已经验证了Android平台是正确的(x86),否则链接器将跳过错误的libgdal。所以object。

我已经包括了libgdal。所以,*中的。apk(由Qt生成)使用ANDROID_EXTRA_LIBS*=$GDAL_LIB_PATH/libgdal。所以。其他文件libgdal。所以x、 不能以相同的方式包含x,因为Qt会阻止它。

为了避免动态链接,我还尝试将我的应用程序链接到libgdal。a但出现了许多链接时间错误(例如,未定义对“atof”的引用)

我在网上搜索过,但没有找到解决问题的方法。

我不受使用动态链接的限制,因此,以下任何问题的解决方案都对我有好处:

>

  • 有没有办法避免创建libgdal。所以x、 x构建GDAL时的文件?

    有没有办法在Qt生成的*. apk文件中包含libgdal.so.x. x文件?

    在链接静态库libgdal时,如何避免链接时间错误。a

    提前感谢您的回复!


  • 共有1个答案

    方轩昂
    2023-03-14

    经过几天的尝试和错误(主要是错误),我找到了解决问题的方法。

    我写这篇文章是为了回答我的问题,以便对其他人有所帮助。

    问题出现在GDAL的链接时间内。简而言之:链接器创建了“实名”共享库libgdal。所以1.17.1及其链接libgdal。所以1libgdal。所以

    出于某些原因(我忽略了),强制链接到libgdal。因此,,链接器搜索libgdal。所以1(反过来,它会搜索libgdal.so.1.17.1)。

    解决我的问题的解决方法可以总结为以下步骤:

    >

  • GDAL根目录下,根据所需的配置(见http://trac.osgeo.org/gdal/wiki/BuildingForAndroid)运行./confiure,检查libkit是否为ENABLED

    编辑创建的libtool文件(例如,使用gedit)如下所示:

    • 将library_names_spec的值替换为library_names_spec="\$libname\${shared_ext}"
    • 将soname_spec的值替换为soname_spec="

    打字

    在输出文件夹中。libs/将创建唯一的libgdal.so,现在到libgdal.so的链接似乎工作正常。

  •  类似资料:
    • 问题内容: 当我尝试使用Terminal中的命令使用python创建虚拟环境时,出现以下错误: 我不是第一个遇到类似错误的人-我尝试遵循此答案的建议并运行: 那没有帮助。也没有以超级用户身份运行commmand。 接下来我应该调查什么? 问题答案: 我有完全相同的错误消息。Continuum Analytics支持小组的Ray Donnelly提供了以下解决方案,为我解决了这个问题: 当您pip安

    • 问题内容: 我是python应用程序的新手。我正在尝试使用pyinstaller构建python GUI应用程序。我的应用程序取决于以下软件包:PyQt4,numpy,pyqtgraph,h5py。我正在使用WinPython-32bit-3.4.4.1。 我使用以下命令构建应用程序: 我用pyinstaller创建的dist目录中的exe文件启动了我的应用程序,在程序调用numpy并出现以下错误

    • 这是我的应用程序的文件夹结构 在我的文件,我像这样加载字体和资源 对于这个,运行将给出退出代码0。 在我家。dart我有以下课程: 我在其他地方使用,以显示图像(代码省略): 这座大楼没有错误。颤振博士-v没有给出任何错误,颤振分析-v也没有给出任何错误。apk似乎构建得很好,但当应用程序在我的手机上打开时,我在asset_bundle中发现以下错误。投掷: 发生异常。错误(无法加载资源:imag

    • 我已经在Android Studio(https://www.learn2crack.com/2016/03/setup-opencv-sdk-android-studio.html)中安装了OpenCV SDK,但似乎我收到了这种错误消息。 我已经将包含到文件夹中。

    • 问题内容: 我一直有一些奇怪的问题。主要的问题是,在尝试将WSDL添加到新项目时,我始终收到以下错误: 这是error.log文件中记录的消息: 我验证了该URL上的应用程序已启动并正在运行,并且可以从Web浏览器访问WSDL,但是无论如何我始终会收到此错误消息。我在Windows 7机器上使用SoapUI 4.5.0(32位)。我也尝试了64位版本,但结果相同。无论我是否使用VPN,都会发生这种

    • 问题内容: 我正在尝试在iOS的libGDX中开发应用程序。 在我的Java课中,我写了这一行 我的robovm.xml看起来像这样- 当我尝试在iOS模拟器上运行代码时,它运行良好。但是,当我尝试在iOS设备(即iPhone)上运行它时。它产生一个看起来像这样的错误- 有人可以帮我弄这个吗 ? 注意:-在我的iOS项目的data文件夹中,还有另一个“ data”文件夹,其中还有一个名为“ fol