关于Freeswtich的mod模块编译的一个问题

最近有一个freeswitch的mod模块需要从centos移植到debian去,原来以为会非常容易,结果却是一波三折,折腾了很久,好在结果是解决了,今天就是做下记录。

其实当这个mod移植到debian去后,编译并没有问题,只是在执行的时候出现了如下的提示:

很显然是函数找不到,但明明动态库里面有这个函数呢,通过一顿研究,发现了确切的原因:引用网上的说明如下:

“Abi 链接最常见的错误是 std::string 和 std::list 的在gcc 4.x 和 gcc 5.x 的不同实现引起的。在gcc 4.x 时,gcc 对标准 string 的实现就放在 std 命名空间下,编译时展开为 std::basic_string 。但是 gcc 5.x 开始,对 string 的实现就放在了 std::__cxx11空间里,编译后展开为 std::__cxx11::basic_string 。这就会导致在 gcc 4.x 编译的动态库,假如有的函数使用了 string 作为参数或者返回值,这时导出的函数参数为 std::basic_string 类型。 无法在 gcc 5.x 下编译连接使用。
错误类似:

undefined symbol:  "std::__cxx11 ***"

这种情况有一个折中办法就是在gcc 5.x 或以上 编译时,增加 -D_GLIBCXX_USE_CXX11_ABI=0 禁用 c++11 abi。”

原来centos下的编译器是gcc4.8.5,而在debian11下早已升级到了gcc10,故此产生了问题。做个留念记录吧。
 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作一个 Minecraft Mod 需要一些基本的编程知识和一些工具。以下是制作 Minecraft Mod 的基本步骤: 1. 下载并安装 Java 开发工具包(JDK):在你的计算机上安装 JDK,确保使用的是适合你操作系统的版本。 2. 下载并安装 Minecraft Forge:Minecraft Forge 是一个用于创建和加载 Mod 的工具。在官方网站(https://files.minecraftforge.net/)上下载适合你 Minecraft 版本的 Forge 安装程序,并按照其指南进行安装。 3. 创建一个新的 Mod 项目:使用 IDE(集成开发环境)如 Eclipse 或 IntelliJ IDEA 创建一个新的 Java 项目。 4. 添加 Minecraft Forge 到项目:将下载的 Minecraft Forge 的库文件添加到项目的构建路径中。 5. 编写 Mod 代码:使用 Java 编写你的 Mod 代码。你可以使用 Minecraft Forge 提供的 API 来添加新的方块、物品、生物、合成配方等。 6. 编译和导出 Mod:将你的代码编译为可执行的 Mod 文件。这通常是一个 JAR 文件。 7. 将 Mod 安装到 Minecraft:将生成的 Mod 文件复制到你的 Minecraft 安装目录下的 "mods" 文件夹中。 8. 启动 Minecraft 并测试 Mod:启动 Minecraft 游戏,确保你的 Mod 能够正常加载和运行。 请注意,这只是制作 Minecraft Mod 的基本步骤。具体的细节和功能取决于你想要创建的 Mod 的复杂程度和要实现的特定功能。你可能需要进一步学习 Minecraft Forge 的文档和其他教程来深入了解如何开发特定类型的 Mod

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值