glibc相关内容
出于某种原因,我想对 glibc 的 strlen 函数进行基准测试,结果发现在 GCC 和我不知道为什么. 这是我的代码: #include #include #include #include int main() {char *s = calloc(1
..
我不知道如何在 CentOS 6.3 上将 glibc 从 2.12 版升级到 2.14 版.我需要你的帮助. 解决方案 您无法在 Centos 6 上安全地更新 glibc.但是,您可以轻松地将 2.14 与 2.12 一起安装,然后使用它来编译项目等.方法如下: mkdir ~/glibc_install;cd ~/glibc_installwget http://ftp.gnu.o
..
使用 Linux 和 C++,我想要一个执行以下操作的函数: string f(string s){string r = system(“foo 显然上述方法行不通,但您明白了.我有一个字符串 s,我想将它作为应用程序“foo"的子进程执行的标准输入传递,然后我想将其标准输出记录到字符串 r 然后返回. 我应该使用哪种 Linux 系统调用或 POSIX 函数组合?我使用的是 Linu
..
所以大家可能都知道 glibc 的 /lib/libc.so.6 可以像普通的可执行文件一样在 shell 中执行,在这种情况下,它会打印其版本信息并退出.这是通过在 .so 中定义入口点来完成的.在某些情况下,将其用于其他项目也可能很有趣.不幸的是,您可以通过 ld 的 -e 选项设置的低级入口点有点太低级了:动态加载器不可用,因此您无法调用任何适当的库函数.由于这个原因,glibc 在这个入口
..
当我在 Ubuntu Lucid 10.04 PC 上编译某些东西时,它会链接到 glibc.Lucid 使用 2.11 的 glibc.当我在另一台装有旧 glibc 的 PC 上运行这个二进制文件时,命令失败,说没有 glibc 2.11 ... 据我所知,glibc 使用符号版本控制.我可以强制 gcc 链接到特定的符号版本吗? 在我的具体使用中,我尝试为 ARM 编译一个 gc
..
我的 linux (SLES-8) 服务器目前有 glibc-2.2.5-235,但我有一个程序不能在这个版本上运行并且需要 glibc-2.3.3. 是否可以在同一主机上安装多个 glibcs? 这是我在旧的 glibc 上运行我的程序时得到的错误: ./myapp:/lib/i686/libc.so.6: version `GLIBC_2.3' not found(./mya
..
我尝试从我的汇编代码中使用 printf,这是一个最小的例子,它应该只将 hello 打印到标准输出: .section .rodata你好:.ascii "你好\n\0";.section .text.globl _start_开始:movq $hello, %rdi # 第一个参数xorl %eax, %eax # 0 - 使用的向量寄存器的数量调用 printf#出口movq 60 美元,
..
我正在尝试在 Alpine Linux 上安装 glibc.我在 Docker 中运行 Alpine Linux.以下是我正在使用的步骤: docker pull alpine docker run -it alpine/bin/sh apk add --no-cache make gcc linux-headers bsd-compat-headers gawk bison binut
..
在具有正确路径的 docker alpine linux 基础映像上设置 glibc 是否有最佳实践,以便任何生成的进程都可以正确引用已安装的 libc 库的位置? 解决方案 是的, 我使用自定义构建的 glibc 在其上安装了 JRE. 您可以在此处 找到它 您可以使用 wget 或 curl 获取代码并使用 apk 进行安装 更新的命令见下面的评论 apk --
..
我正在尝试构建一个交叉编译器,x86_64 是主机,i386 是目标.我得到了(所有常见的)crti.o:没有这样的文件错误.而不是从发行版中获取已经构建的 crti.o 和 crtn.o...我该如何从 glibc(或可能是 gcc)源中明确构建这些文件? 仅供参考,我很清楚 x86_64 编译器的 -m32 选项.我更喜欢只有 32 位的编译器环境.另外,我不想使用任何已经构建的 i38
..
就程序而言,堆栈只是一堆内存.回溯函数如何确定哪些堆栈字节是指令指针返回地址,而不是哪些只是函数参数等? 解决方案 对程序而言,栈就是一堆内存. 没错.如果您对程序的结构一无所知,您将无法展开其堆栈. 用于展开的最简单的结构是单个“帧指针"保留寄存器以始终指向当前帧,并且该帧包含位于已知偏移量处的上一个帧指针. 这是在i*86上使用了很长时间的机制,并且仍然在许多RI
..
这是一个重新发布的帖子,之前的帖子被关闭,移动到服务器故障并再次关闭.我认为这篇文章是一个有效的计算器溢出问题,因为我认为它是由一些自动制作/编译/链接错误.这是编程问题而不是服务器管理员问题. 交叉编译 PHP https://serverfault.com/questions/418521/cross-compile-php 文章开始 我已经下载了 PHP 5.4.0 源代
..
我正在处理的代码在 Windows XP 和 Mac OS X 上完美运行.在 CentOS(以及 Fedora 和 Ubuntu)上测试时,它无法正常工作.搜索网络使我得出结论,它是导致问题的 iconv 的 glibc 版本.所以现在我需要 iconv 的 libiconv 版本才能让 Zend Lucene 正常工作. 我已经下载了 libiconv 并使用 --prefix=/usr
..
我正在构建 32 位 C++ 库,它将在现代 Ubuntu 机器上的旧系统上运行.应用程序在 Ubuntu 上运行良好,但是当我移动到旧的 Centos 6.9 机器时出现错误: 无法打开我的库:/usr/lib/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found (required by/home/aaa/bbb/libme.so) 如何解决
..
根据 crypt(3) 手册,河豚(由 $2a$ 前缀表示)是受支持的密码方法之一: ID |方法──────────────────────────────────────────────────────────────1 |MD52a |Blowfish(不在主线 glibc 中;在一些|Linux 发行版)5 |SHA-256(自 glibc 2.7 起)6 |SHA-512(自 glib
..
我需要计算一个数字中的小数位数(例如:1002 为 4).我想以 O(1) 时间复杂度执行此操作,因为代码将在大量数字上迭代,从而显着节省 CPU 时间. 我想出了两个解决方案: 循环除以 10,直到数字变为零.循环数是答案.但是,显然是 O(n) 时间. log_base_10(num) + 1 问题:log10 是 O(1) 解决方案吗?我在 x86 机器上使用 glibc
..
我正在研究glibc的堆. libc.so中没有main_arena符号,即使我尝试使用pwntool转储它也是如此.但是,当我调试测试程序时,可以打印main_arena结构. gdb-peda $ p main_arena$ 1 = {互斥锁= 0x0,标志= 0x0,fastbinsY = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},顶部=
..
Fedora 33乐 我想使用NativeCall与lic.so.6进行交流,以作为我正在编写的示例.我发现了 https://www.gnu.org/software/libc/manual/html_node/Function-Index.html https://www.gnu.org/software/libc/manual/html_node/Getting-the-Tim
..
我在项目中使用openCV.在Red Hat实例中进行测试时,出现异常"/lib64/libc.so.6:找不到版本'GLIBC_2.15'".那么,如何在Red Hat中安装glibc 2.15?我喜欢 rpm (不是2.15(我希望新版本能对我有所帮助)),但是我需要一些依赖项.我可以从某个仓库中安装glibc吗? thx! 解决方案 我可以从某些存储库中安装glibc吗?
..
因此,在痛苦的调试之后,我发现像wcslen这样的libc函数在处理非内存对齐的缓冲区时将无声地失败.以我为例,执行wcslen(mystr)会导致错误的长度值,该长度值稍后才产生崩溃(在wcstombs中,assert buff [-1] == 0). 对我来说,一种解决方案是重新编写我需要在未对齐内存上使用的所有宽字符串函数.这很容易,但也很肮脏,而且由于没有关于libc的哪些部分支持非
..