在 Linux 上编译时未定义对 mempcy@GLIBC_2.14 的引用

2024-05-06

我正在尝试将应用程序驱动使用 ftdi2332h 芯片的设备从 Windows 移植到 Linux。我在 ubuntu 10.04 系统上安装了 libftd2xx 库按照这些说明 http://www.ftdichip.com/Drivers/D2XX/Linux/ReadMe-linux.txt.

当我尝试编译任何示例程序时,出现以下错误:

/usr/local/lib/libftd2xx.so: undefined reference to `memcpy@GLIBC_2.14'
collect2: ld returned 1 exit status

有关如何解决此问题的任何指导方针?


The mempcy@GLIBC_2.14称为版本化符号。 Glibc 使用它们,而其他运行时库如穆尔不 https://www.openwall.com/lists/musl/2015/05/10/1.

意义mempcy@GLIBC_2.14在Linux上编译时是由于Glibc改变了方式memcpy2012年回来工作。memcpy用于复制字节{begin → end}(低内存地址到高内存地址)。 Glibc 2.13 提供了一个优化的memcpy在某些平台上复制了 {end → begin} 。我相信“某些平台”包括具有 SSE4.1 的 Intel 机器。然后,Glibc 2.14 提供了memcpy恢复了 {begin → end} 行为。

有些程序依赖于 {begin → end} 副本。当程序使用重叠缓冲区时memcpy产生未定义的行为。在这种情况下,程序应该使用memmove,但是由于发生了 {begin → end} 的副本,他们才过得去。另请参阅mp3 flash 网站上有奇怪的声音 https://bugzilla.redhat.com/show_bug.cgi?id=638477(由于 Adob​​e Flash),Glibc 更改暴露错误 https://lwn.net/Articles/414467/(在 LWN 上),memcpy 与 memmove 的传奇 https://www.win.tue.nl/~aeb/linux/misc/gcc-semibug.html和朋友。

要修复它,您似乎可以将以下内容添加到源代码中:

__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");

也许像下面这样。然后将额外的源文件包含在您的项目中。

$ cat version.c

__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 上编译时未定义对 mempcy@GLIBC_2.14 的引用 的相关文章

随机推荐

  • Unix cURL POST 使用文件中的内容到特定变量

    我已经搜索过这个答案 但没有找到任何有效或完全符合我的问题的答案 使用 Unix cURL 我需要将键 值对发布到服务器 密钥将是 MACs 换行符分隔的 MAC 地址文件的内容将是此 POST 的 VALUE 我试过了 curl d fi
  • 重写 .php 扩展名

    请问我该如何重写 有人可以重写这个网址吗 to http localhost display news cat 14 2 http localhost display news cat 14 2 谢谢 您可以使用 htaccess 文件来做
  • GitHub Actions 中的嵌套模板(从另一个 yaml 文件调用一个 yaml 文件)

    GitHub Action 是否支持嵌套模板 例如 以下是 Azure Pipeline yaml 的示例 其中调用另一个 yaml 文件 job BuildFunctions steps each func in parameters f
  • 在 Project Rider 中启用 c# 7 编译

    如果我将 LangVersion 设置为 7 则会出现以下错误 Error CS1617 Invalid option 7 for langversion must be ISO 1 ISO 2 Default or an integer
  • 近调用/跳转表并不总是在引导加载程序中工作

    一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
  • 如何使用 Google Direction api 或 iPhone 应用程序的其他一些 api 比较两条路线

    我想比较两条路线以检查它们在我的 iPhone 应用程序中是否相同 有一个人X想要从A点到B点 另一个人想要从A1点到B1点 我可以使用谷歌的方向 API 获取 A 到 B 之间的路线 http maps googleapis com ma
  • 合并空间上接近的路径/线段的算法

    我正在寻找一种用于街道地图制图概括的几何算法 名称 在我的地图数据中 我有许多路径 点的有序列表 由线段连接 这些路径彼此靠近且几乎平行 我如何 1 识别这些 相邻路径 即如何找到比某个阈值更接近的路径 以及 2 将它们合并成一条路径 即如
  • 如何访问 Rails 4 模型中的 polymorphic_path?

    很简单 我想用polymorphic pathRails 4 模型中的方法 是的 我知道关注点分离很差 我知道Rails application routes url helpers but polymorphic path不在那里 尝试也
  • 在gradle c++项目中配置C++标准?

    我有一个由以下构建脚本定义的 gradle 项目 build gradle plugins id cpp application application targetMachines add machines linux x86 64 ta
  • 如何手动加载并执行 ELF 二进制可执行文件?

    假设二进制文件是PIC 如何将其加载到内存并执行入口点 我这样做是为了熟悉 ELF 所以execve不允许 这些是基本步骤 阅读程序头以查找 LOAD 指令并确定您需要的映射的总长度 以页为单位 将最低地址的 LOAD 指令映射到总长度 可
  • FXML 文档拒绝导入其他 fxml 文件

    我的程序有一个主要的 FXML 文档 其中包含TabPane 对于每个选项卡 我希望它有自己的控制器和 fxml 文件 当我尝试将外部 fmxl 文件包含到主 fxml 文档中时 我的程序拒绝运行 这是我的主要 FXML 文档 这是我的 j
  • 如何使用 jenkins shell 创建新的 git 分支

    我想达到以下目标 在某些詹金斯工作中 从 dev branch 创建一个新分支 对新创建的分支 new branch 进行一些更改 将新创建的分支推送到 git repo 我在詹金斯中执行了以下步骤 我已经在 源代码管理 部分配置了我的 g
  • JSF h:列标记固定宽度

    有人可以告诉我如何使用 JSF 修复数据表中列的宽度吗 我的代码当前如下
  • 在 Go 中使用 init() 函数真的很糟糕吗?

    几天前我开始了一个新的 go 项目 我使用 golangci lint 使我的代码具有良好的风格 我发现 gochecknoinits 是 golangci lint 的 linter 之一 它告诉我不要使用 init 在我看来 为了方便起
  • pandas 用 nan 值切割了一系列

    我想将 pandas cut 函数应用于包含 NaN 的序列 期望的行为是它对非 NaN 元素进行存储并为 NaN 元素返回 NaN import pandas as pd numbers with nan pd Series 3 1 2
  • Excel函数:引用单元格中的数组

    我在单元格 A1 中有一个数组 通过 A1 G6 J6 aa b ccc 1 现在我想将单元格 A1 用于 B1 中的数组公式 基本上B1应该是 B1 SUMPRODUKT C6 C12 B6 B12 G6 J6 但我不想直接引用 G6 J
  • 在 c:\ProgramFiles\ 下时忽略 .Net app.config 文件

    我有一个奇怪的现象 我有 Net 4 0 应用程序 当 myapp exe config 位于普通的 programfiles 文件夹下时 它将被忽略 即使我删除它或在其中写入废话 myapp exe 仍然可以工作 并且在我看来 这些值是从
  • 如何使用Python3将ruamel.yaml转换为dict?

    我想要一个dict or OrderedDict from ruamel yaml 我正在使用 Python 3 8 如果有帮助的话 很乐意切换到 3 9 from ruamel yaml import YAML from collecti
  • java:查找数组中整数的频率

    我需要开发一个java要求用户输入一些内容的程序integers并找出最大和最小的数 以及这些数的平均值 然后 划分数组的集合分成若干子区间用户指定的 然后它生成一个边界点 每个边界点的长度为子区间宽度 问题是我需要创建一个频率 例如 间隔
  • 在 Linux 上编译时未定义对 mempcy@GLIBC_2.14 的引用

    我正在尝试将应用程序驱动使用 ftdi2332h 芯片的设备从 Windows 移植到 Linux 我在 ubuntu 10 04 系统上安装了 libftd2xx 库按照这些说明 http www ftdichip com Drivers