秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

用fpcupdeluxe创建的龙芯交叉编译环境带的libc.so版本比uos/loongxin(2.28)等的版本高,导致编译后的应用不能运行的问题,按网友禁卫军提供的方法(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/1ADedPVwxVPFt4U3-MzwjxQ?pwd=yiqw
提取码:yiqw

需要的就下载吧。
4、重新编译应用就可以。
5、在uos/loongxin/kylin运行交叉编译的程序可能出现无响应或在终端运行时提示:没有那个文件或目录
问题的原因:
      因uos/loongxin/kylin缺少/lib64/ld-linux-loongarch-lp64d.so.1造成在windows交叉编译的程序无法运行。

bash: ./project1: 没有那个文件或目录

2种解决方案:
1、临时解决方案:

在lazarus下Project-->Options->compiler options->custom options添加:

-FL/lib64/ld.so.1


缺点:这个方法需要在每个项目添加这个参数,稍微有点麻烦。

2、永久解决方案(2024-01-21新增):
打开fpcupdeluxe\fpc\bin\x86_64-win64\fpc.cfg

-FL/usr/lib64/ld-linux-loongarch-lp64d.so.1

替换为:

-FL/lib64/ld.so.1

 缺点:如果编译的应用运行的环境不是uos/loongxin/kylin时需要恢复原来的参数。

 

按上述方法修改后,重新编译就可以在龙芯操作系统运行。

 

 在windows交叉编译的程序在龙芯系统运行时的截图:

 这个方法在统信和loongxin测试通过。

posted on   秋·风  阅读(1487)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示