秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  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
这个问题是libc.so兼容性引起的,解决有2个方案:
1、在低版本的系统编译,简单方便,兼容性还不错。
2、在高版本的系统编译,操作稍多,兼容性还行,不过发现用这个方法编译的应用,在低版本系统运行正常,在编译环境的机器运行不了在编译环境运行时取消打勾Pass options to linker with "-k",delimiter is space,然后重新编译就可以)。
编译环境:
树莓派 libc.so 2.36 /unubtn 24.10 libc.so 2.40
CPU:aarch64 / X86_64
lazarus 4.0RC1/FPC 3.3.1
运行环境:
银河麒麟 libc.so 2.31 / unubtn 20.4 libc.so 2.31
CPU:aarch64/X86_64

以下是在高版本系统编译的步骤:
lazarus如何在高版本libc.so编译的程序在低版本系统运行?这个问题在lazarus官方论坛就有人讨论过,不过都不方便,今天用"啊D"大佬的方法简单好用。
1、libc.so等文件的获取(只需要做1次就可以)
获取libc等文件我没按"啊D"的方法,而是直接用windows的下的交叉编译lib[cross\lib\aarch64-linux](兼容性可能更好一些)拷贝到高版本相应系统的指定目录(fpcupdeluxe4/lbc234)中:

不同CPU的linux lib下载包:
百度云盘:
链接: https://pan.baidu.com/s/1Uead3bSmvAeuNE7EmiA0EQ?pwd=4y36 提取码: 4y36
中国移动云盘:
链接: https://caiyun.139.com/m/i?2jQXii1Maftue  提取码:a6lp

/home/lbz/fpcupdeluxe4/libc234


2、设置Porject-->Options-->Compiler Options-->compilation and Linking-->Linking-->打勾Pass options to linker with "-k",delimiter is space并填入以下信息:
红色的部位改为你的目录就可以。
-L /home/lbz/fpcupdeluxe4/libc234 -rpath /home/lbz/fpcupdeluxe4/libc234

3、按上面添加后就可以编译应用了。
在树莓派设置及编译截图:


编译后在银河麒麟上运行的截图:

 
取消打勾Pass options to linker with "-k",delimiter is space后编译在程序在银河麒麟运行时的情况:

 

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