【linux – 32位模式下的NASM x86_64汇编:为什么该指令会生成RIP相对寻址代码?】教程文章相关的互联网学习教程文章

为什么我不能在64位内核上mmap(MAP_FIXED)32位Linux进程中的最高虚拟页面?【代码】

在Linux上尝试在用户空间中测试Is it allowed to access memory that spans the zero boundary in x86?时,我写了一个32位测试程序,试图映射32位虚拟地址空间的低页和高页. 回声0 |后sudo tee / proc / sys / vm / mmap_min_addr,我可以映射零页面,但我不知道为什么我不能映射-4096,即(void *)0xfffff000,最高页面.为什么mmap2((void *) – 4096)返回-ENOMEM?strace ./a.out execve("./a.out", ["./a.out"], 0x7ffe08827c10 /* 6...

Java Out of Memory Error(本机内存),进程大小限制被命中(32位linux)【代码】

我正在测试Web应用程序的性能,并且出现“Out of Memory Error”(本机内存). 我已多次测试,每次“未能为Chunk :: new分配83886088字节”而死亡. 我每分钟打印一次内存大小,发现VmSize在进程死亡之前是2924700 kB. 我认为流程大小限制受到了影响.我将-Xmx2000m更改为-Xmx1900m,现在就可以了. 一些问题: 1.如何确认流程大小限制被打中.这不完全是3G内存. 2.为什么JVM每次分配83886088字节的内存?从异常堆栈看,它似乎与GC有关. 3.除了...

python – 返回结构时带有ctypes的Segfault – 32位linux【代码】

所以我在32位Linux机器上从ctypes获得了一个段错误,我无法在64位darwin或linux上重现. 这是C:typedef struct {void *ptr;} doodle;doodle C_intpointerfunction(int *a) {*a = 41;doodle foo;foo.ptr = a;return foo; }编译时使用:gcc -c intpointerlibrary.c gcc -shared intpointerlibrary.o -o libintpointerlib.so这是Python:import numpy as N from ctypes import *_libintpointer = N.ctypeslib.load_library('libintpoin...

linux – 是为32位还是64位机器编译的共享对象?【代码】

在Linux中是否有一个命令可以在/usr/lib中的已编译共享对象(.so)上运行并知道它是为64位还是32位系统编译的? (我的意思是要知道ELF类,比如ELFCLASS32)解决方法:您可以使用file命令.例如.:[myuser@mycomputer]$file /usr/lib/libcurl.so.4.1.1 /usr/lib/libcurl.so.4.1.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

linux – 为什么不在64位Ubuntu上安装32位.deb软件包?

我的.deb包,构建在32位Ubuntu上,包含用gcc编译的可执行文件,不会安装在64位版本的操作系统上(错误信息显示为’错误的架构i386′).这让我感到困惑,因为我认为通常32位软件可以在64位硬件上运行,但反之亦然. 我是否可以使用我的32位机器生成一个可以在64位操作系统上安装的.deb文件?是仅仅使用适当的编译器标志来生成可执行文件(如果是这样的话),或者.deb文件本身是否特定于一个处理器体系结构?解决方法:deb安装程序可能拒绝安装您...

在Linux中对sbrk(0)的初始调用是否总是返回一个与8个字节对齐的值(或者在32位系统的情况下为4)【代码】

我正在研究这里定义的malloc的实现: http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf. 作者创建了一个自然地在4字节边界上对齐的元数据结构,然后在元数据结构之后将x字节的请求与4字节边界对齐,该元数据结构实际上充当块的头部. pdf指出,由于元数据和请求现在已对齐,因此结果数据将完全对齐.如果对sbrk()的第一次调用返回与4字节边界对齐的堆的基址,则结果可以解决. sbrk()总是在初始调用中返回4字节(或64位系统的情况下为8字节...

linux – 用于x86-64的rpmbuild 32位lib包

我正在尝试使用rpmbuild来构建x86-64包和libs-32bit包.使用相同的src rpm来构建两个输出包.rpmbuild创建package-lib-32bit-X.x.x68_64.rpm的参数是什么? 我目前这样做是为了得到一个32位的包:CC =’gcc -m32’CXX =’g -m32′linux32 rpmbuild -bb -target = i586 package.spec 当我需要package-lib-32bit-X.x.x86_64.rpm时,这给了我package-lib-X.x.i586.rpm.什么参数将“32位”添加到包名称并命名为x86_64?解决方法:对于opens...

什么是PHP的mt_rand()最小值以及如何在32位Linux机器上计算32位内插【代码】

mt_rand()允许的最小值是多少? 32位和64位机器的值是否相同?如何使用mt_rand()生成32位整数(请注意,它不需要高度随机)? 背景为什么我要求:我有一个64位开发物理服务器和一个32位生产VPS.刚刚意识到生产服务器没有产生跨越整个范围的PK.为了弄清楚发生了什么,我运行了以下脚本. 64位机器永远不会(或者至少我从未目睹)匹配,但32位匹配大约50%的时间.<?phpdate_default_timezone_set('America/Los_Angeles'); ini_set('display_e...

Android Studio 64位错误:32位Linux Android模拟器二进制文件已弃用

我最近将我的ubuntu 13.10 64位升级到14.04 64位. Android Studio在13.10上运行良好. 在14.04我有gradle(this one)的问题,这是一个缺少libz.so.1的问题.在this link之后,我不得不安装这个软件包的32位版本,它解决了我的问题. 现在(我认为这是相关的),在尝试启动设备模拟器时,我有这样的消息:ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to usethem you will have to do at least one of the following:– Use...

在32位Linux内核上使用c在堆上分配超过2GB的空间【代码】

这似乎是一个非常普遍的问题,但我还没有找到明确的答案. 我可以访问运行linux的服务器,具有16 GB的RAM和16核(64位)的CPU(/ proc / cpuinfo给出“Intel(R)Xeon(R)CPU E5520 @ 2.27GHz”).但是,内核是32位(uname -m给出i686).当然,我没有root权限,所以我无法改变那. 我正在运行一个我编写的C程序,它做了一些需要内存的计算,所以我我需要一个大堆 – 但每当我尝试分配超过2GB时,我得到一个badalloc,虽然ulimit返回“无限”.为简单起见...

linux – 如何为32位嵌入式软件重新配置Google Test?【代码】

我已经设法根据this.安装了Google Test 我的问题如下:我必须测试正在为具有32位操作系统的嵌入式软件开发的项目,因此我需要从64位重新配置Google Test. 使用旧的1.7.0版本,它知道解决方案是这样的:autoreconf -fvi ./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" make这就是我现在尝试使用新版本的方法:cd home/CWD/googletest/googlemock autoreconf -fvi ./configure --build=i686-pc-...

使堆栈指针返回到mmap返回的指针. (Linux,32位VM)【代码】

我正在尝试将我的堆栈指针移动到mmap-ed区域来模拟上下文切换,但不知何故,下面的代码总是会产生分段错误: C:struct savectx {void *regs[JB_SIZE]; };struct savectx* initctx=(struct savectx*)malloc(sizeof(savectx)); void *newsp; if ((newsp=mmap(0,STACK_SIZE,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,0,0))==MAP_FAILED){perror("mmap failed"); } initctx->regs[4]=newsp; restorectx(initctx,0);86:restorect...

ubantu32位 linux下hexedit的下载安装【图】

Hexedit软件介绍: hexedit是一个开源的完全免费的命令行软件,可用于在任何GNU / Linux操作系统下以十六进制和ASCII(美国信息交换标准代码)格式查看和编辑文件。 下载: 在softpedia网站上找到Linux下hexedit的安装包:有32位和64位的,我用的是32位直接运行: 将压缩包解压后,进入到usr/bin级目录下 即在命令行输入 cd /hexdeit-1.2.13/usr/bin 然后输入./hexedit 再输入要打开的二进制文件完整目录就OK啦 用hexedit打开后的文...

运行64位操作系统的64位操作系统上的android studio给出了错误:32位Linux Android模拟器二进制文件已被弃用

我有类似这个问题:Android Studio 64-bit ERROR: 32-bit Linux Android emulator binaries are DEPRECATED 我在Gentoo Linux / amd64上运行android studio 2.1.1,当我尝试运行android android studio的模拟器时给我错误:/home/user/Android/Sdk/tools/emulator -netdelay none -netspeed full-avd Nexus_5X_API_23 ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use themyou will have to do at least one ...

Linux:从32位用户模式程序中检测64位内核(长模式)【代码】

检测32位用户模式程序是否在64位内核上运行(即系统是否处于“长模式”)的最佳和最可靠的方法是什么?如果可能的话,我宁愿不调用外部程序(或者必须加载任何内核模块). 注意:我想检测是否正在使用64位内核(或者实际上,CPU是否处于长模式),而不仅仅是存在64位处理器(/ proc / cpuinfo告诉我但不是正在使用64位功能). 如果uname是32位编译或者如果使用setarch i686,则内核伪造32位处理器.最佳答案:调用uname()函数并检查返回的机器字符...