abi

(How) Can I use the new C++ 11 ABI with devtoolset-7 on Centos/RHEL?

匿名 (未验证) 提交于 2019-12-03 01:10:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: My goal is to use gcc 7.2 (and clang 6) on Centos 7 to build executables compatible with Centos 7 targets without devtoolset installed but * using the newer C++ ABI *. The newer ABI fixed a couple of deficiencies in the lib that weren't able to be fixed without an ABI change. E.g list::size O(1) Vs O(n), no COW for strings. I speculated on an answer as to why this might not be possible in the following question. -D_GLIBCXX_USE_CXX11_ABI=1 ineffective for devtoolset-7 on CentOS 7 回答1: This seems like a duplicate of the question you

Android NDK: How to get compiler architecture in Android.mk dynamically

匿名 (未验证) 提交于 2019-12-03 00:59:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm trying to configure Android.mk to cross compile native code to support different chipset namely armeabi, mips, and x86. I know I can configure Application.mk in the following way to compile the source code for different chip set: APP_ABI := all This will trigger Android-NDK's build script to compile the source code for all the chipsets. However, I want to dynamically tell Android.mk to look for different static library dependencies compiled with different chip set. # Get the architecture info ARCH := ???? include $(CLEAR_VARS) LOCAL

_GLIBCXX_USE_CXX11_ABI, GCC 4.8 and ABI compatibility

匿名 (未验证) 提交于 2019-12-03 00:46:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: We received some libraries (.a) compiled for linux (probably compiled with GCC 6.x). We are using GCC 4.8 and we are getting the error of the type: undefined reference to std::__cxx11::basic_string when trying to link. Normally this could be fixed by making sure all units have been compiled with the same _GLIBCXX_USE_CXX11_ABI flag. However if I understood correctly, this was introduced by GCC 5.1 and on. Is there a way to make this work with GCC 4.8 or do we need to ask the people to recompile the libraries with a different _GLIBCXX_USE

APP_ABI

匿名 (未验证) 提交于 2019-12-03 00:34:01
在Application.mk文件中有个预定义命令参数APP_ABI,是指明编译与调试的CPU架构。 目前Android系统支持以下七种不同的CPU架构:ARMv5,ARMv7(从2010年起),x86(从2011年),MIPS(从2012年),ARMv8,MIPS64和x86_64(从2014年),每一种都对应相应的ABI。 CPU架构 ABI ARMv5 armeabi 32位,从2010年 ARMv7 armeabi-v7a 32位,从2010年 x86 x86 32位,从2011年 MIPS mips 32位,从2012年 ARMv8 arm64-v8a 64位,从2014年 MIPS64 mips64 64位,从2014年 x86_64 x86_64 64位,从2014年 相应生成arm64-v8a,mips64,x86_64下的文件需要NDK_r10以上版本支持。在Application.mk文件里配置APP_ABI的内容。例如指明某个具体的CPU架构 APP_ABI := arm64-v8a 或者直接生成所有的版本 APP_ABI := all 注意: 根据不同的NDK版本,APP_ABI := all仅能生成当前版本支持的ABI信息库文件,如果需要生成最新的必须更新相应的NDK版本。 或者明确写明支持的CPU架构 注意: 由于目前版本支持的问题,采用Eclipse

以太坊abi解析

匿名 (未验证) 提交于 2019-12-03 00:30:01
什么是abi ABI是Application Binary Interface的缩写,字面意思 应用二进制接口,可以通俗的理解为合约的接口说明。当合约被编译后,那么它的abi也就确定了。 我们来看看一个很简单的合约和它的abi 合约代码如下: [html] view plain copy a val 经过编译之后,它的字节码如下: [html] view plain copy abi如下,是json格式的 [html] view plain copy 可以看到,这是一个json格式的数组,它包含两个对象,每个对象都对应着一个合约方法,这里因为a是public类型的,编译的时候会自动为它生成get()方法,所以这个合约实际是包含两个方法的,我们对方法的参数做一下整理。 构造方法和缺省方法不能有name和outputs,缺省方法也不能有inputs,向一个没有payable标注的方法发送ether会抛异常。 文章来源: 以太坊abi解析

When do we break binary compatibility

空扰寡人 提交于 2019-12-03 00:26:29
I was under the impression that whenever you do one of these: Add a new public virtual method virtual void aMethod(); Add a new public non-virtual method void aMethod(); Implement a public pure-virtual method from an interface virtual void aMethod override; Was actually breaking binary compatibility, meaning that if a project had build on a previous version of the DLL, it would not be able to load it now that there is new methods available. From what I have tested using Visual Studio 2012, none of these break anything. Dependency Walker reports no error and my test application was calling the

Android .so abi兼容,通用armeabi-v7a和arm64-v8a架构的方法

匿名 (未验证) 提交于 2019-12-03 00:26:01
写在前面:请先了解 Android的.so文件、ABI和CPU的关系 http://blog.csdn.net/xx326664162/article/details/51163905 、 armeabi-v7a、 arm64-v8a、 mips、 mips64、 x86、 x86_64等abi的原理后,很久以前一般都只是用armeabi在做兼容。现在其实市面上主流的手机都支持armeabi-v7a和arm64-v8a。请看如下简介: 各版本的分析如下所示: mips / mips64: 极少用于手机可以忽略,有兴趣的可以百度一下。 x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,实现 对 arm .so 的兼容,再考虑 x86 1% 以下的市场占有率,x86 相关的两个 .so 也是可以忽略的 armeabi: ARM v5 这是相当老旧的一个版本,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈 armeabi-v7a: ARM v7 目前主流版本,一般市面上的骁龙系列或者麒麟系列的处理器绝大部分都是这种架构 arm64-v8a: 64位支持 所谓的ARMv8架构,就是在MIPS64架构上增加了ARMv7架构中已经拥有的的TrustZone技术、虚拟化技术及NEON advanced

Difference between armeabi and armeabi-v7a

白昼怎懂夜的黑 提交于 2019-12-02 22:15:07
As far as I can tell from the docs, the difference between the two supported flavors of ARM architecture in Android NDK is only in the set of supported CPU instructions. Is that really so? Is there no difference in calling conventions, or system call sequence, or something else? I'm wondering what will happen if I compile a module to an ARM object file (with a compiler other than NDK - Free Pascal specifically), specifying ARMv6 as the architecture, and then link it to both armeabi and armeabi-v7a shared libraries. The FPC bits are not supposed to perform neither system calls nor Java calls,

How to expose STL list over DLL boundary?

大兔子大兔子 提交于 2019-12-02 19:43:35
I have a DLL which needs to access data stored in STL containers in the host application. Because C++ has no standard ABI, and I want to support different compilers, the interface between the application and DLL basically has to remain plain-old-data. For vectors this is relatively straightforward. You can simply return the memory block of the vector, because it is guaranteed to be contigious: // To return vector<int> data virtual void GetVectorData(const int*& ptr, size_t& count) const { if (!vec.empty()) ptr = &(vec.front()); count = vec.size(); } Now the DLL can have safe read-only access

APK completely shadowed with multiple ABI APKs

时光总嘲笑我的痴心妄想 提交于 2019-12-02 17:52:53
问题 UPDATE: tried lowering "v7a" ABI versionCode to prefix 4 (lower than 5 which is "v8") without any luck Currently my app is in Alpha stage. Every APK was generated by the same ABI split and the same version multiplication for each ABI (code included), to both "armeabi-v7a", and to "arm64-v8a". Even though I have uploaded only "v8a" APK until now. Now when I'm trying to upload the "v7a" I'm getting the following error from google play console: Problem: This APK will not be served to any users