Basic DesignWe assume that the application binary interface (ABI) is strongly typed and is known both at compile time and static. Will not provide an introspective mechanism. We assert that all contracts have interface definitions for any contracts that they invoke at compile time.
This specification does not deal with contracts whose interfaces are dynamic or only known at run time. If these conditions become important they can be properly disposed
ExampleOn Android phone execution getprop | grep cpu , you will get a message similar to the following:[ro.product.cpu.abi]: [arm64-v8a][ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi][ro.product.cpu.abilist32]: [armeabi-v7a,armeabi][ro.product.cpu.abilist64]: [arm64-v8a]Each CPU supports a different set of instructions (instruction set), a combination of a CPU and instruction set defines an ABI (application Binary Interface), and the
Abi is "application binary interface", that is, the compilerCodeA rule used for compiling code.
Abi specifications generally include:
(1) Expression of C type (INT, short, long, union, struct ...)
(2) calling convention, including: how to pass function parameters and return values; if registers and stacks are used.
When compiling a function with floating-point parameters, there are three possible
Abi/Eabi/oabi
Http://wiki.debian.org/ArmEabiPortArmeabiport
(..............................)Terminology
StrictlySpeaking, both the old and new arm Abis are subsets of the arm EabiSpecification, but in everyday usage the term "Eabi" is used to meanThe new one described here and "oabi" or "old-Abi" to mean the old one. however, there are one or two programs that sometimes describe an old
when we use the MSP430 MCU for project development, we will encounter the output format of the two image files (as shown): Legacy COFF and Eabi (ELF), this article launches from this topic, leads to COFF Abi and Eabi two application binary interface, Enables developers to low-level from theMSP430 has a new understanding. 1. image file output formatthe MSP430 compiler can output image files in two formats:A,COFF Object FilesCOFF is an abbreviation of
Bugtags V1.2.7 introduced the NDK so library, which, when integrated, encountered different so libraries packaged to the APK, installed on some machines, and failed to java.lang.UnsatisfiedLinkError load.To this end, a deep look at the principle, and give a solution.
PrincipleThe Android system is essentially a transformed Linux system. As early as the Android system only supported ARMV5 CPU architecture, with the development of Android system, added ARMv7, x86 (+), MIPS (+), ARMV8, MIPS64 a
Abi is the protocol between systems and applications. A binary (exec, Lib) must comply with Abi to run on the corresponding system. for example, no matter what kind of compiler I use on a PC, as long as I generate an elf file that complies with Linux, use the corresponding Instruction Set (such as Intel, PPC, or iSCSI ). it can be run on a Linux machine. call the system or someone else's lib.
Cpu/abi shows the solution for the no system images installed for this targetDownload image manuallyhttp://www.androiddevtools.cn/SDK System ImagesThis is the system image that is required when creating the emulator, that is, when the emulator is created, the CPU/ABI item needs to be selected, downloaded and decompressed, the entire extracted folder can be copied or moved to a your sdk 路径/system-images fold
This article describes how to build the C++11 build environment in CentOS 7Clang's Custom C + + library is libc++ (LIBCXX). then, Libcxx also needs an ABI library, Libc++abi (Libcxxabi). Unfortunately, the two libraries have a circular dependency problem. to break the cycle dependency problem, you can build libc++ without connecting to the Libc++abi. then, using
-missing-prototypes- Wno-padded-wno-old-style-cast-lc++-lc++abi New_feature.cppThe resulting a.out file appears./a.out:error while loading shared libraries:libc++abi.so.1:cannot open Shared object file:no such file or directoryFinally, in the compilation file, several libraries are added to the/usr/lib inside to produce the output.The Library files are:Note: It may be necessary to manually copy the header files from the include included in build to/us
)The story tells us that Abi's Food Factory is on the verge of distress, so the top leaders decided to develop a new food product-Abi's people (I personally think it reflects the nature of capitalism)As a result, Abi, who accidentally heard the news, not only had to escape from the food factory, but also rescued 99 other siblings (mission impossible, but a foreigner wrote down all the rescue strategies, in view of the size, I will not release it here)
It is true that some companies expressly prohibit the use of STL also has a certain reason. In fact, the essence of this problem is that most developers are stupid, not the level of control of these details, project release in case of a problem? To throw a slot for this, when I link a library, the link fails due to inconsistencies in the compilation parameters and the link parameters. That library is the C + + interface.The current C + + where can be compared with C
In C + +, due to the existence of overloading and other technologies, the compiler to the function, struct, class, and so on to the linker, it can not be as simple as the C language through the function name, it needs to provide additional parameter information, but also with the C language to share the linker, which requires a name adaptation (name mangling), also called name retouching (name decoration).Name adaptation, but for historical reasons, C + + does not have this standard (C + + does
The ABI is the abbreviation for the application Binary interface, which identifies the operating mode of the processor and the encoding format of the specification target file.
The MIPS instruction set architecture formally supports the 64-bit mode of operation since MIPS3, so the code can follow O32 (o meaning old), N32 (n meaning new) and N64 Abi.
O32 and N64 are pure 32-bit and 64-bit modes
Talk about the Linux application ABI compatibility backgroundRecent work encountered a problem, that is, multiple systems running different versions of the kernel, different architectures of the arm chip, the upper level of the business process can be binary to one (total mirroring).Based on your knowledge of Linux, GLIBC is able to do forward compatibility at the ABI level. Can the whole system do it? This
Nswarn: nil string argument libc ++ abi. dylib: terminate_handler unexpectedly threw an exception, exceptionhandler
Yes
20:12:51. 501 Pan doctor [5001: 299704] nssag: nil string argument
20:12:51. 502 Pan doctor [5001: 299704] nssag: nil string argument
Libc ++ abi. dylib: terminate_handler unexpectedly threw an exception
Summary of error messages:
I couldn't find a good method when this error occ
About the ABI compatibility of Linux applicationsBackground
A problem encountered in recent work is that multiple systems run on different versions of the kernel, ARM chips of different architectures, and whether upper-layer business programs can be restored in binary format (shared images ).
Based on your understanding of Linux, can glibc be forward compatible at the ABI level. Can the whole system do this
door, the gem is used to add points, the white cross medicine box is bloody, and the crab is the enemy, the sharp thorn and the pressed column will get blood when it hits. The space key is a jump, but the enemy still does not find how to beat the bullet, or you can only dodge it. Old Rules: Let's first take a look at what the ABI escaping game is under Ubuntu (SEE ).
Now let's take a closer look at the installation process of the Abe's Amazing Adve
New X32 abi:64-bit mode with 32-bit pointers
The $ bits mode of x86 CPUs enlarges the CPU registers to the bit, allowing to address larger (>4GB) amounts of memory. This is widening, however, has a drawback. Because memory addresses are 64-bit wide, pointers occupy-bits of space, the double of spaces used in-bits mode, so B Inaries compiled for the 64-bit mode are bigger, and while these programs run they with more RAM. And since they are bigger they
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.