草庐IT

binary-compatibility

全部标签

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 - 为什么 Universal Binaries/FatElf 不是 Linux 内核的一部分?

关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。ImprovethisquestionApple的通用二进制文件概念允许轻松传送包含二进制文件的32位和64位版本的单个文件。虽然这在使用FatElf的Linux中是可能的,但默认情况下FatElf和通用二进制文件的概念并没有包含在内核中?这背后的原因是什么?为什么内核开发人员认为在Linux上使用通用二进制文件是个坏主意?更新我不是要讨论。假设通用二进制文件不是主要linux内核的一部分。我只是问其背后的原因。

ruby - 在 heroku : `cannot find Chrome binary` 上使用 chrome 驱动程序运行 selenium

我是linux设置(和heroku)的菜鸟,如果这个问题很基础,我深表歉意。我想在Heroku上运行seleniumwebkit(在ruby​​中)。我遇到了一个困难,我的脚本找不到Chrome二进制文件。我实际上让chrome自己工作:~$chromedriverStartingChromeDriver2.22.397932(282ed7cf89cf0053b6542e0d0f039d4123bbb6ad)onport9515Onlylocalconnectionsareallowed.chromedriver是我从/app/vendor/bundle/bin/chromedrive

Linux shell 脚本 : hex number to binary string

我正在shell脚本中寻找一些将十六进制数转换为0和1字符序列的简单方法。例子:5F->"01011111"是否有任何命令或简单的方法可以完成它,或者我应该为它编写一些开关吗? 最佳答案 echo"ibase=16;obase=2;5F"|bc 关于Linuxshell脚本:hexnumbertobinarystring,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/960592

linux - 第一个 make binary 是从哪里来的?

我必须构建gnumake由于过于复杂的原因无法在此处解释。我注意到要构建它,我需要以传统方式使用make命令本身:./configuremakeinstall如果我还没有make二进制文件怎么办?第一个makebinary是从哪里来的? 最佳答案 第一个gcc二进制文件来自同一个地方。第一个make可能是使用shell脚本创建的。之后,make将“制造”自己。当平台成为“自托管”时,这是系统开发方面的一项显着成就。也就是平台可以自己搭建。诸如“makemake”和“gccgcc.c”之类的东西。许多语言编写者会用另一种语言(比如C)

c++ - GDB 错误 : Selected architecture i386 is not compatible with reported target architecture i386:x86-64

有谁知道这个错误是什么意思?我在Linux机器上使用Netbeans8.0、gdb7.8.1。两天前一切都很好,然后当我开始调试时突然开始出现这个错误,我不知道这是什么意思。到目前为止,我正在尝试清理和重置我能想到的一切:重新安装netbeans、清理所有本地文件、再次rebase我的代码、取消设置所有断点等等。谁能帮我理解这个错误是什么意思?我从未设置过这些断点,Netbeans从哪里获取它们?提前致谢,雷切尔编辑所以现在我有更多的细节:当我尝试直接使用GDB调试我的应用程序时,没有netbeans我收到以下错误:Startingprogram:....warning:Selecte

linux - gcc 编译的二进制文件给出 "cannot execute binary file"

我编译这个程序:#includeintmain(){printf("HelloWorld!");return0;}使用这个命令:gcc-c"hello.c"-ohello当我尝试执行hello时,我得到了bash:./hello:Permissiondenied因为权限是-rw-r--r--1nathannathan8562010-09-1723:49hello出于某种原因??但是无论如何......在更改权限并尝试再次执行之后,我得到了bash:./hello:cannotexecutebinaryfile我正在使用gcc(Ubuntu4.4.3-4ubuntu5)4.4.3我在这里

c - OS X 是 Linux 可执行文件 "compatible"吗?

如果您在基于Linux的平台上用C语言编译程序,然后将其移植以使用MacOS库,是否可以运行?来自编译器的核心机器代码是否在Mac和Linux上都兼容?我问这个的原因是因为两者都是“基于UNIX的”所以我认为这是真的,但我不太确定。 最佳答案 不,Linux和MacOSX二进制文件不交叉兼容。一方面,Linux可执行文件使用一种称为ELF的格式.MacOSX可执行文件使用Mach-Oformat.因此,即使许多库通常在每个系统上单独编译,它们也无法以二进制格式移植。此外,Linux实际上并不是基于UNIX的。它确实与UNIX共享许多

PHP array_key_exists() 和 SPL ArrayAccess 接口(interface) : not compatible?

我写了一个简单的集合类,这样我就可以将我的数组存储在对象中:classApp_CollectionimplementsArrayAccess,IteratorAggregate,Countable{public$data=array();publicfunctioncount(){returncount($this->data);}publicfunctionoffsetExists($offset){return(isset($this->data[$offset]));}publicfunctionoffsetGet($offset){if($this->offsetExists(

php - 严格标准 : Declaration of ' ' should be compatible with ' '

我刚刚在PHP5.4上安装了woocommerce2.0(在Wordpress上),我得到了这个:StrictStandards:DeclarationofWC_Gateway_BACS::process_payment()shouldbecompatiblewithWC_Payment_Gateway::process_payment()inD:\my\path\to\htdocs\wordpress\plugins\woocommerce\classes\gateways\bacs\class-wc-gateway-bacs.phponline...我检查了文件,发现WC_Paym