【Delphi】RAD 10.4 开发Android时如何在迁移SDK和NDK路径后解决提示 ld: cannot find -lxxx的问题

摘要:
今天,我使用精简版安装了RADDelphi10.4。我发现Android SDK和NDK目录自动安装在C驱动器上。由于C驱动器容量不足,我想将目录迁移到其他路径!在以前的版本中,目录是直接移动的。您可以在delphi的工具选项菜单页上修改SDK路径。然而,经过此修改后,发现链接时仍然找不到路径。在检查delphi的编译命令行信息后,发现usrlib路径仍在C驱动器中,如下所示:“Project1.dpr”f:program_filesbarraderostudio21.0和ccaarm.exe-$O---no-config-B-Q-TX.so-AGenerics.Collections=System.Generics的dccaarmcommandline。收藏;Generics.Defaults=System.Generics.Default-DDEBUG-E。AndroidDebug If:程序_文件禁运录音频21.0libAndroiddebug;f: program_ filesembraderostudio21.0libAndroidRelease-LEC:UsersPublicDocumentsEmbraderoStudio21.0BplAndroid-LNC:UsersPpublicDocumentsEmbcaderoStudio21.2DcpAndroid-NU。AndroidDebug NSSystem;Xml;数据数据捕捉;网状物肥皂;-其中:program_ filesembraderostudio21.0libAndroidRelease-Rf:program_ filesembgraderostudio21.0 libAndroidrelease-Uf:program filesembradorostudio21.0LibAndroidebug;f: program_ filesembraderostudio21.0libAndroidRelease--libpath:C:UsersPublicDocumentsEmbraderoStudio21.0平台SDKsandroid-ndk-r21sourcescxx-stlllvm-libc++libsarmeabi-v7a;C: UsersPublicDocumentsEmbcaderoStudio21.0平台SDKsandroid-nd-r21platformsandroid-23arch-armusrlib--linker:F:Program_FilesEmbarcaderStudio21.0平台SDKSandroid-nndk-r21olchainsarm-linux-androoidabi-4.9prebildowns-x86_64inarmlinux-androideabi-ld.exe-V-VN-NO.AndroidDebugProject1.dpr再次检查sdk路径,未发现任何错误。据推测,这个bug可能是delphi。估计错过了NDK图书馆路径。在该页面中仅找到C++Builder的NDKLibraryPath设置项(这是由精简版的剪裁造成的吗?

今天使用lite版本安装了RAD Delphi10.4,发现自动把Android的SDK和NDK目录安装到C盘下,由于C盘容量紧张,所以想把目录迁移到其他路径!

在之前的版本是直接移动目录,在到delphi的tools-options菜单页面中修改SDK路径即可。

但是这次修改后发现在link时仍然找不到路径,查看了delphi的编译命令行信息,发现其中 usrlib 路径仍然是C盘的,如下:

dccaarm command line for "Project1.dpr"
  f:program_filesembarcaderostudio21.0indccaarm.exe -$O- --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;
  Generics.Defaults=System.Generics.Defaults -DDEBUG -E.AndroidDebug -If:program_filesembarcaderostudio21.0libAndroiddebug;
  f:program_filesembarcaderostudio21.0libAndroidRelease -LEC:UsersPublicDocumentsEmbarcaderoStudio21.0BplAndroid 
  -LNC:UsersPublicDocumentsEmbarcaderoStudio21.0DcpAndroid -NU.AndroidDebug -NSSystem;Xml;Data;Datasnap;Web;Soap; 
  -Of:program_filesembarcaderostudio21.0libAndroidRelease -Rf:program_filesembarcaderostudio21.0libAndroidRelease 
  -Uf:program_filesembarcaderostudio21.0libAndroiddebug;f:program_filesembarcaderostudio21.0libAndroidRelease 
  --libpath:C:UsersPublicDocumentsEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21sourcescxx-stlllvm-libc++libsarmeabi-v7a;
  C:UsersPublicDocumentsEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21platformsandroid-23arch-armusrlib 
  --linker:F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21	oolchainsarm-linux-androideabi-4.9prebuiltwindows-x86_64inarm-linux-androideabi-ld.exe 
  -V -VN -NO.AndroidDebug  Project1.dpr   

再次检查sdk路径,发现并无错误,猜测可能是delphi的bug,估计是漏掉了NDK library Path,页面中仅有C++ Builder的NDK library Path设置项(难道是lite版本裁剪后导致的?)。

好在发现delphi提供了设置项的export和import功能,因此,我先使用export导出设置文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="">
  <PropertyGroup>
    <Profile_platform>Android64</Profile_platform>
    <Profile_host>localhost</Profile_host>
    <Profile_port>64211</Profile_port>
    <Profile_sdkname>AndroidSDK25.2.5_64bit.sdk</Profile_sdkname>
    <Profile_displayname>Android SDK 25.2.5 64-bit</Profile_displayname>
    <Profile_version>25.2.5</Profile_version>
    <Profile_sysroot>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-sdk-windows</Profile_sysroot>
    <NDKArmLinuxAndroidFile>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21	oolchainsaarch64-linux-android-4.9prebuiltwindows-x86_64aarch64-linux-androidinld.exe</NDKArmLinuxAndroidFile>
    <NDKArmLinuxAndroidStripFile>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21	oolchainsaarch64-linux-android-4.9prebuiltwindows-x86_64aarch64-linux-androidinstrip.exe</NDKArmLinuxAndroidStripFile>
    <NDKApiPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21platformsandroid-23</NDKApiPath>
    <NDKBasePath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21</NDKBasePath>
    <NDKGdbServerPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21prebuiltandroid-arm64gdbservergdbserver</NDKGdbServerPath>
    <SDKZipAlignPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-sdk-windowsuild-tools29.0.3ipAlign.exe</SDKZipAlignPath>
    <SDKAndroidPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-sdk-windows	oolsAndroid.bat</SDKAndroidPath>
    <SDKAdbPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-sdk-windowsplatform-toolsAdb.exe</SDKAdbPath>
    <SDKAaptPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-sdk-windowsuild-tools29.0.3Aapt.exe</SDKAaptPath>
    <SDKApiLevelPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-sdk-windowsplatformsandroid-29android.jar</SDKApiLevelPath>
    <JDKPath>C:Program Files (x86)Javajdk1.8.0_112</JDKPath>
    <JDKJarsignerPath>C:Program Files (x86)Javajdk1.8.0_112inJarSigner.exe</JDKJarsignerPath>
    <JDKKeyToolPath>C:Program Files (x86)Javajdk1.8.0_112inKeyTool.exe</JDKKeyToolPath>
    <DelphiNDKLibraryPath>C:UsersPublicDocumentsEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21sourcescxx-stlllvm-libc++libsarm64-v8a;C:UsersPublicDocumentsEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21platformsandroid-23arch-arm64usrlib</DelphiNDKLibraryPath>
    <CBuilderNDKLibraryPath>F:Program_FilesEmbarcaderoStudio21.0PlatformSDKsandroid-ndk-r21platformsandroid-23arch-arm64usrlib</CBuilderNDKLibraryPath>
    <Profile_password>xxxxxxxx</Profile_password>
  </PropertyGroup>
</Project>

注意其中的<DelphiNDKLibraryPath>仍然指向未迁移前的C盘路径,因此将该路径修改后,再重新使用import功能导入设置即可。

免责声明:文章转载自《【Delphi】RAD 10.4 开发Android时如何在迁移SDK和NDK路径后解决提示 ld: cannot find -lxxx的问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇FPGA综合工具--Synplify Pro的常用选项及命令Vue vue-resource 请求数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 实现异步加载图片

麦洛开通博客以来,有一段时间没有更新博文了.主要是麦洛这段时间因项目开发实在太忙了.今天周六还在公司加班,苦逼程序猿都是这样生活的. 今天在做项目的时候,有一个实现异步加载图片的功能,虽然比较简单但还是记录一下吧.因为麦洛之前实现异步加载图片都是使用了AsynTask这个API,继续这个类,实现起来非常简单也很方便.在doInBackground()方法里...

Android 多媒体视频播放一( 多媒体理解与经验分享)

前言 说到android的多媒体,一把辛酸一把泪,当初听说会多媒体的比较牛掰,公司也有需求,于是乎我也积极的加入研究android多媒体的行列,记得以前刚接触的时候,最开始还是比较头大的,主要是但是很多细节比较零散凌乱,无法形成规律模式和合理的解决方案,但是慢慢也虽然接触了久了,很多事情也就明白过来了,接触android三年多四年了,慢慢的也有些学习和做事...

Delphi中的操作二进制文件的两个重要函数

Delphi中的操作二进制文件的两个重要函数 对于通过Byte数组进行文件操作的,在FTP中经常会使用到,我也是在Delphi调用Web Service进行文件的上传和下载时找到这两个函数的,挺好用的,推荐给大家。(申明:非本人所写) 1. 将Byte数组生成文件 procedureByteArrayToFile(constByteArray : TB...

基于 声网Agora SDK 实现 iOS 端的多人音视频互动

参考链接:https://blog.csdn.net/agora_cloud/article/details/104403949 声网SDK官方文档链接:https://docs.agora.io/cn/Agora%20Platform/downloads?_ga=2.258035661.676431363.1583292162-552509559.158...

Pascal精要笔记

Pascal精要笔记 Pascal语言的大小写不敏感特性有一个例外:控件包中的Register 过程必须以大写字母R开始,因为需要与C++Builder 兼容。 ,编译器不编译代码中的空格、空行和Tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。(也就是说: = 这样的写法没有问题,我原来还以为由问题那!) 记住要用代码模板(方便...

Android开发-Android Studio问题以及解决记录

[Android开发] Android Studio问题以及解决记录 http://blog.csdn.net/niubitianping/article/details/51400721 1、真机运行报错Multi dex requires Build Tools 21.0.0 / Current: 19.1 解决: 在项目 build.gradle 里...