用fpcupdeluxe创建的龙芯交叉编译环境libc.so版本比UOS/loongxin等的版本高,导致编译后的应用不能运行的问题,按网友禁卫军提供的方法(Lazarus编译Loongarch64不能运行的情况 - 禁卫军 - 博客园 (cnblogs.com)和lazaurs自建库文件系统 - 禁卫军 - 博客园 (cnblogs.com)),从loongxin系统提取相关文件后,交叉编译出来的应用可正常运行。
步骤:
1、将cross\lib\loongarch64-linux的文件删除
2、从loongxin系统的:
\usr\lib\loongarch64-linux-gun
提取相关文件拷贝到cross\lib\loongarch64-linux
3、修改libc.so
打开libc.so文件
将文件修改为以下内容,保存后退出:
/* GNU ld script Use the shared library, but some functions are only in the static library, so try that secondarily. */ OUTPUT_FORMAT(elf64-loongarch) GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld.so.1 ) )
为方便大家,我将提取并修改后的loongarch64-linux上传到:
链接:https://pan.baidu.com/s/14dZeS5ppVVGxrLjYpQWddA?pwd=4bk8
提取码:4bk8
需要的就下载吧。
4、重新编译应用就可以。
5、如果编译的应用在龙芯系统不能运行,在lazarus下Project-->Options-)compiler options->custom options添加:
-FL/lib64/ld.so.1
这个方法在统信和loongxin测试通过。
在此感谢 禁卫军 提供的方法。