草庐IT

c++ - 交叉编译到 x86 时出现 libboost 系统链接器错误

我正在尝试在Ubuntu11.04x64上构建32位应用程序。由于libboost的链接器错误,我在构建时遇到了一些问题。构建语句中有-lboost_system,但是当我尝试构建时,我得到了一堆:CommunicationModule.cpp:(.text+0x68c1):undefinedreferencetoboost::system::generic_category()CommunicationModule.cpp:(.text+0x68d7):undefinedreferencetoboost::system::system_category()我在谷歌上找到的所有内容都表

linux - Syscalls for x86-64 Linux NASM(YASM) 详细说明

我找到了x86-64模式的系统调用列表(带参数):http://filippo.io/linux-syscall-table/但是我在哪里可以得到这个系统调用的详细描述?例如下面的例子,除了0102o(rw,create)之外,哪些标志可以用于'open'系统调用,在其他情况下:只读、只写等SECTION.datamessage:db'Hello,world!',0x0alength:equ$-messagefnamedb"result"fddq0SECTION.textglobal_start_start:movrax,2;'open'syscallmovrdi,fname;file

linux - x86_64 程序集 execve *char[] 系统调用

我试图在不使用标准库的情况下使用一些Linux64位x86程序集,但是我在处理提供给我的程序的参数(argv)时遇到了一些问题。我认为(根据文档)rsp标记argcqword的开始,而[rsp+8]将是argv。不幸的是,情况并非如此,以下(删节)程序会导致EFAULT(错误地址)。sys_execveequ59sys_exitequ60section.datachilddb"/bin/sh",0global_startsection.text_start:movrdi,child;#1filenamemovrsi,[rsp+8];#2argvmovrdx,0;#3envp=0movr

linux - "relocation R_X86_64_32S against `.bss ' can not be used when making a shared object”

我在这方面绝对是新手,但在类里面,老师给了我们他写的文件,让我们运行它,然后它工作得很好,但是当我尝试在家里做它时(我在VirtualBox上使用Linux)并使用:nasm-felf64hello.asm-ohello.ogcchello.o-ohello我收到错误“创建共享库时不能使用针对`.bss'的重定位R_X86_64_32S;使用-fPIC重新编译”。有人可以解释一下如何使它工作吗?globalmainexternprintfsection.datanapis:db'Helloworld!-poraz%ld',10,0liczba_iteracji:equ5section.

android - 这个内核需要一个 x86-64 cpu 但只检测到一个 i686 cpu

我有问题。Genymotion2.6.0+VirtualBox4.3.12。WindowsXP32位。如果有人知道解决方案,将不胜感激。这个内核需要一个x86-64cpu但只检测到一个i686cpu。无法启动-请使用适合您CPU的内核这个问题是用Android5.x的方式出现的。Android4.4.4-没问题。 最佳答案 Genymotion需要64位硬件才能使用最新的Android内核。如果需要,您可以运行32位主机操作系统,但您的硬件仍然必须是64位的。以下是与当前Windows系统要求相关的下载页面部分:SystemRequ

c++ - 使用 c++ 和 x86 和 x64 架构访问处理器中断

我想知道是否可以从C++代码访问处理器中断(我想我需要使用汇编代码)。事情是这样的。我习惯于使用嵌入式系统(PIC、ARM7和Atmel处理器),我可以毫无问题地编写中断程序(我使用C)。所有寄存器都已映射,总而言之,这很容易,具体取决于应用程序。现在我正在使用x86和x64架构,我希望(强调WANT)能够在这些处理器中执行相同的操作。例如:我希望在C++中有一个线程运行一段代码,该代码不断验证当前按下的键,而无需按下回车键(cin、getchar等)。我想编写一个定时器中断,这样我就可以在特定时间执行操作。我知道我想做的很多事情都可以通过操作系统完成,但我真的很想拥有自己做这些的自由

linux - rpmbuild x86-64 的 32 位库包

我正在尝试使用rpmbuild构建x86-64包和libs-32位包。使用相同的srcrpm来构建两个输出包。rpmbuild生成package-lib-32bit-X.x.x68_64.rpm的参数是什么?我目前这样做是为了获得32位软件包:CC='gcc-m32'CXX='g++-m32'linux32rpmbuild-bb-target=i586package.spec当我需要package-lib-32bit-X.x.x86_64.rpm时,它会给我package-lib-X.x.i586.rpm。哪些参数将“32bit”添加到包名称中并命名为x86_64?

php - 在 x86_64 GNU/Linux 上升级 PEAR

当我运行sudopearupgradepear时,它以以下错误结束:ERROR:unabletounpack/tmp/tmpsozA4Q/Structures_Graph-1.0.4.tgz有没有人遇到过这样的事情,你对如何解决这个问题有什么建议吗?它让我彻夜难眠。 最佳答案 通常此错误是由于非常过时的pear版本导致的,它甚至无法再与pear服务器通信并下载HTML页面而不是真正的存档。要解决此问题,您需要手动更新pear。wgethttp://pear.php.net/go-pear.pharphpgo-pear.phar并按照

linux - 没有 %gs 寄存器的 x86 子集 : binary patching code that uses %gs instead of trapping to emulation?

由于太复杂的原因无法在这里解释,我需要在x86的子集平台上运行x86GCC编译的Linux程序。该平台没有%gs寄存器,这意味着它必须被模拟,因为GCC依赖于%gs寄存器的存在。目前我有一个包装器,当程序试图访问%gs寄存器时捕获异常,并模拟它。但这是狗慢。有没有一种方法可以使用等效指令提前修补ELF中的操作码,从而避免陷阱和仿真? 最佳答案 您是否尝试过使用-mno-tls-direct-seg-refs选项编译您的代码?从我的GCC手册页(i686-apple-darwin10-gcc-4.2.1):-mtls-direct-s

linux - 从 x86 函数(x87 的 flds/fstps)返回时,信号 NaN 被破坏

我对x86(32位)linuxgcc有奇怪的行为。我使用gcc的内置__builtin_nansf("")生成信号NaN,它生成0x7fa00000。这个值作为float函数返回后,修改为0x7fe00000。有一个简短的例子:#includefloatf=__builtin_nansf("");floaty;floatfunc(void){returnf;}intmain(void){printf("%x\n",*((int*)&f));y=func();printf("%x\n",*((int*)&y));}用gcc-4.6.2program.c编译的程序,其输出:7fa00000