草庐IT

syswow64

全部标签

c - 64 位平台上 GCC 中的基本堆使用统计信息

我需要从GCC为Linux编译的C程序中回答一个基本问题:当前有多少进程堆正在使用(由malloc分配),如果有空闲堆block,还有多少驻留.标准库的GNU实现具有mallinfo函数,它准确地报告了我需要的内容,但它只能用于32位配置,而且据我所知,没有64位等效的功能(顺便说一句,谁知道为什么?)。我在Linux上使用GCC,所以我需要这个用于Linux。但我假设堆对系统是不透明的,所以回答这个问题的唯一方法是使用标准库的实现提供的手段。在Windows平台上的MSVC实现中,没有与mallinfo功能等效的功能,但有所谓的heap-walk功能,它允许通过遍历所有信息来计算必要

c - 64 位平台上 GCC 中的基本堆使用统计信息

我需要从GCC为Linux编译的C程序中回答一个基本问题:当前有多少进程堆正在使用(由malloc分配),如果有空闲堆block,还有多少驻留.标准库的GNU实现具有mallinfo函数,它准确地报告了我需要的内容,但它只能用于32位配置,而且据我所知,没有64位等效的功能(顺便说一句,谁知道为什么?)。我在Linux上使用GCC,所以我需要这个用于Linux。但我假设堆对系统是不透明的,所以回答这个问题的唯一方法是使用标准库的实现提供的手段。在Windows平台上的MSVC实现中,没有与mallinfo功能等效的功能,但有所谓的heap-walk功能,它允许通过遍历所有信息来计算必要

linux g++ 将 64 位共享库代码链接到静态库

上下文:我可以创建一个链接到静态库的共享对象库,在32位Linux上没有任何问题。当我在64位Linux上尝试相同的构建时,我看到了这个链接器错误:创建共享对象时不能使用针对“局部符号”的重定位R_X86_64_32S;重新编译-fPIC这个错误在网络上很常见。解决方案是使用位置无关代码(-fPIC)编译静态链接库。我不明白的是为什么32位版本不需要这样做。有人可以帮忙吗? 最佳答案 如果您的目标模块将在共享库中使用,则始终需要“位置独立代码”。它高度依赖于平台,并且会产生一些开销。您必须在amd64而不是x386上明确指定它的原因

linux g++ 将 64 位共享库代码链接到静态库

上下文:我可以创建一个链接到静态库的共享对象库,在32位Linux上没有任何问题。当我在64位Linux上尝试相同的构建时,我看到了这个链接器错误:创建共享对象时不能使用针对“局部符号”的重定位R_X86_64_32S;重新编译-fPIC这个错误在网络上很常见。解决方案是使用位置无关代码(-fPIC)编译静态链接库。我不明白的是为什么32位版本不需要这样做。有人可以帮忙吗? 最佳答案 如果您的目标模块将在共享库中使用,则始终需要“位置独立代码”。它高度依赖于平台,并且会产生一些开销。您必须在amd64而不是x386上明确指定它的原因

linux - 如何解释 x86-64 上的段寄存器访问?

有了这个功能:mov1069833(%rip),%rax#0x2b5c1bf9ef90add%fs:0x0,%raxretq我如何解释第二条指令并找出添加到RAX中的内容? 最佳答案 这段代码:mov1069833(%rip),%rax#0x2b5c1bf9ef90add%fs:0x0,%raxretq返回线程局部变量的地址。%fs:0x0是TCB(线程控制block)的地址,1069833(%rip)是从那里到变量的偏移量,这是已知的,因为变量驻留在程序中或在程序加载时加载的某些动态库中(在运行时通过dlopen()加载的库需要一

linux - 如何解释 x86-64 上的段寄存器访问?

有了这个功能:mov1069833(%rip),%rax#0x2b5c1bf9ef90add%fs:0x0,%raxretq我如何解释第二条指令并找出添加到RAX中的内容? 最佳答案 这段代码:mov1069833(%rip),%rax#0x2b5c1bf9ef90add%fs:0x0,%raxretq返回线程局部变量的地址。%fs:0x0是TCB(线程控制block)的地址,1069833(%rip)是从那里到变量的偏移量,这是已知的,因为变量驻留在程序中或在程序加载时加载的某些动态库中(在运行时通过dlopen()加载的库需要一

linux - CentOS 64位安装ffmpeg 'install with -fPIC'错误

尝试在64位CentOS机器上编译ffmpeg时出现此错误。这是我的./configure选项:./configure--enable-shared--enable-gpl--enable-nonfree--enable-postproc--enable-swscale--enable-pthreads--enable-libx264--enable-libxvid--enable-libvorbis--enable-libfaac--enable-libmp3lame--enable-libvpx制作编译源代码时出现以下错误:/usr/bin/ld:/usr/local/lib/li

linux - CentOS 64位安装ffmpeg 'install with -fPIC'错误

尝试在64位CentOS机器上编译ffmpeg时出现此错误。这是我的./configure选项:./configure--enable-shared--enable-gpl--enable-nonfree--enable-postproc--enable-swscale--enable-pthreads--enable-libx264--enable-libxvid--enable-libvorbis--enable-libfaac--enable-libmp3lame--enable-libvpx制作编译源代码时出现以下错误:/usr/bin/ld:/usr/local/lib/li

linux - 如何在 Linux 上使用 gcc 程序集在 x86-64 中设置控制寄存器 0 (cr0) 位

我正在使用以下代码设置cr0位以禁用缓存。当我编译这个时#includeintmain(){__asm__("pushl%eax\n\t""mov%cr0,%eax;\n\t""orl$(1我收到错误消息,指出操作数对mov无效。任何人都可以给我指一个好的gccx86-64指南来做这些事情吗?另外上面的代码到底有什么问题? 最佳答案 好吧,最后我写了下面的内核模块。我不确定它是否正确,因为我没有观察到禁用缓存时应该伴随的急剧减速。但这可以正确编译和插入。任何指示都会有所帮助。谢谢!#include#includeMODULE_LIC

linux - 如何在 Linux 上使用 gcc 程序集在 x86-64 中设置控制寄存器 0 (cr0) 位

我正在使用以下代码设置cr0位以禁用缓存。当我编译这个时#includeintmain(){__asm__("pushl%eax\n\t""mov%cr0,%eax;\n\t""orl$(1我收到错误消息,指出操作数对mov无效。任何人都可以给我指一个好的gccx86-64指南来做这些事情吗?另外上面的代码到底有什么问题? 最佳答案 好吧,最后我写了下面的内核模块。我不确定它是否正确,因为我没有观察到禁用缓存时应该伴随的急剧减速。但这可以正确编译和插入。任何指示都会有所帮助。谢谢!#include#includeMODULE_LIC