abi

    3热度

    2回答

    ,不知是否安全根据C99的标准,来解释这样一个结构: struct my_struct_t { int a; int b; int c; }; 作为int[3]。即这个代码片段是否适合所有ABI? struct my_struct_t f; int *i = &f.a; i[0] = 1; // f.a == 1 i[1] = 2; // f.b == 2

    5热度

    3回答

    假设C库必须与应用程序代码共享结构的细节,并且必须保持API和ABI向后兼容性。它试图通过检查传递给它的结构的大小来做到这一点。 说,以下结构需要更新。在库版本1, typedef struct { int size; char* x; int y; } foo; 在库的版本2,将其更新为:现在 typedef struct { int size;

    4热度

    1回答

    我想编译Linux上的动态链接的可执行文件,我想针对一个老的glibc ABI,以确保它能够尽可能运行在尽可能多的Linux计算机。我知道典型的解决方案是使用chroot或虚拟机,安装旧的工具链,让工具链自然地定位到旧的glibc ABI,但我想知道是否有明确告诉编译器的方法:“嘿,我希望你依赖版本GLIBCXX_3.4.11“。 谢谢!

    0热度

    2回答

    我如何构建可在使用英特尔CPU的设备上工作的应用程序?与ARM技术的设备我的应用程序的工作,但是当我尝试在设备安装我的应用程序与英特尔CPU它`显示此消息: Devicenot兼容 和日志此消息: 失败[INSTALL_FAILED_CPU_ABI_INCOMPATIBLE] 这是我的项目的build.gradle文件: apply plugin: 'com.android.application

    4热度

    1回答

    对C++的内嵌命名空间的理由是源代码和二进制兼容性(见香草萨特的纸N2535链接),但我一直没能找到很好的例子保持二进制兼容现有的库引入内嵌的命名空间时,或者如果有可能的。 (更多的信息,和源代码兼容的例子,见this question) (用于解决相关的问题,使用内联命名空间来引进incompability,见this question) 如果这是我们当前的磁带库(如中是指mylib.dll),

    5热度

    1回答

    ELF Handling For Thread-Local Storage文档为各种体系结构提供了各种模型(本地执行/初始执行/常规动态)的汇编序列。但不是ARM - 是否有任何地方可以看到ARM的这种代码序列?我正在编译一个编译器,并希望生成能够在平台链接器(包括程序和动态链接)下正常运行的代码。为了清楚起见,我们假设一个ARMv7 CPU和一个非常新的内核和glibc(比如3.13+/2.19

    15热度

    3回答

    强烈建议在创建64位内核(用于x86_64平台)时指示编译器不要使用用户空间ABI执行的128字节红色区域。 (对于GCC,编译器标志是-mno-red-zone)。 如果内核被启用,内核将不会中断。 但是为什么呢?

    4热度

    1回答

    说我有这个库: // lib.h typedef struct MyStruct { int a; int b; } MyStruct; int func(void); 的所有功能都使用MYSTRUCT作为参数。是否可以在不破坏ABI的情况下删除MyStruct?

    16热度

    1回答

    作为Linux发行版中的下游维护者,我通常维护的一些软件包开始在其代码库中使用C++ 11功能。它们都依赖于Linux发行版打包的不同库。 Problems with the ABI将C++ 11代码与C++ 98和AFAIK混合时,当编译软件生成软件包时,大多数当前的主要Linux发行版默认不启用C++ 11标志。 问题是:主要的Linux发行版如何处理C++ 11代码的入口?使用系统库时,是否

    1热度

    1回答

    我需要识别用于生成一些二进制文件,程序,动态库和静态库的ABI。 我想问一下,如果有一个属性或一个标签或字符串,我可以与一些外部的工具,看看哪些ABI被用于创建二进制对象进行检查。我的对象主要是用于x86和ARM的ELF,并且我也包含ABI以用于调试目的,就像DWARF一样。 编辑:像在一般用于检测文件的FILEFORMAT文件开始神奇字节。