memcpy@GLIBC_2.14 的gcc 版本
时间: 2023-10-20 14:05:36 浏览: 64
要查找支持memcpy@GLIBC_2.14的gcc版本,你可以使用以下命令:
```shell
strings /usr/lib/libc.so.6 | grep GLIBC_2.14
```
这将在libc.so.6文件中搜索包含GLIBC_2.14的字符串。libc.so.6是GNU C Library的主要共享库文件。
如果该命令返回结果,它将显示与GLIBC_2.14相关的信息,其中包括所需的gcc版本。例如,你可能会看到类似于"GCC_3.4"或"GCC_4.4"的字符串。
请注意,memcpy是C库函数,因此与gcc版本无关。而memcpy@GLIBC_2.14是指在glibc 2.14版本中引入的memcpy函数的符号。因此,你可能需要查找与所需glibc版本兼容的gcc版本。
相关问题
linux 编译报错 undefined reference to `memcpy@GLIBC_2.14'
这个错误通常出现在使用较新版本的 GLIBC 库编译代码时,而目标系统的 GLIBC 版本较旧。GLIBC 是 GNU C 库,它提供了许多 C 语言运行时函数的实现,其中包括 `memcpy` 函数。
在编译时发生这个错误是因为目标系统的 GLIBC 版本不支持 `memcpy@GLIBC_2.14`,即目标系统的 GLIBC 版本过旧,不具备对应的函数实现。
有几种解决方法:
1. 更新目标系统的 GLIBC 版本至 2.14 或更高版本。
2. 使用较旧版本的 GLIBC 编译代码,或者在编译时指定低于 2.14 的 GLIBC 版本。
3. 尝试不使用 `memcpy` 函数,或者使用其他相似的函数进行替代。
请注意,在更新目标系统的 GLIBC 版本之前,请确保了解其可能带来的影响和风险,并谨慎操作。
==3564== Invalid write of size 8 ==3564== at 0x4C2E8BE: memcpy@@GLIBC_2.14 (vg_replace_strmem.c:1033) ==3564== by 0x4F0AA4E: Gopher::Internal::BufferedBlockInStream::read(char*, int) (BufferedBlockInStream.cpp:124) ==3564== by 0x4F0F54E: read (FileInStream.cpp:128) ==3564== by 0x4F0F54E: Gopher::Internal::FileInStream::read(char*, int) (FileInStream.cpp:109) ==3564== by 0x4F0F66B: Gopher::Internal::FileInStream::decryptRead(char*, int) (FileInStream.cpp:96) ==3564== by 0x4EE1DB7: gopherRead (gopher.cpp:655) ==3564== by 0x40BCA3: testReadInner(char const*) (in /root/Gopher/test/python-test/multiProcess/writeWithPara) ==3564== by 0x40C4AD: testRead() (in /root/Gopher/test/python-test/multiProcess/writeWithPara) ==3564== by 0x40C888: main (in /root/Gopher/test/python-test/multiProcess/writeWithPara) ==3564== Address 0x1ffebff5d8 is on thread 1's stack ==3564== in frame #5, created by testReadInner(char const*) (???:)
这是 `valgrind` 工具提供的一条内存错误信息。根据错误信息显示,这是一个无效的大小为8字节的写入操作(Invalid write of size 8)。
根据堆栈跟踪信息,问题出现在 `memcpy` 函数中,该函数通常用于在内存之间进行数据拷贝。具体来说,在 `BufferedBlockInStream.cpp` 文件的第124行调用了 `memcpy` 函数,导致了无效的写入操作。
这种错误通常发生在以下情况下:
1. 内存越界:在访问数组、指针或使用 `memcpy` 进行拷贝时,超出了有效内存范围。
2. 释放后使用:在释放了内存后,仍然尝试对其进行读写操作。
3. 栈溢出:在栈空间中分配了大量数据,超过了栈的容量。
你需要检查代码中涉及的相关代码段,特别是 `BufferedBlockInStream.cpp` 文件中第124行的代码,以及涉及该代码的其他地方。
使用 `valgrind` 的 `--track-origins=yes` 选项可以提供更多关于错误来源的信息,你可以尝试添加该选项来获得更详细的错误报告。
请注意,这只是一个指导,你需要仔细检查代码以找到并解决问题。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)