linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码
生活随笔
收集整理的這篇文章主要介紹了
linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
初步了解ELF格式
首先讓我們先了解什么是原生Linux程序, 以下說明摘自維基百科
In computing, the Executable and Linkable Format (ELF, formerly named Extensible Linking Format), is a common standard file format for executable files, object code, shared libraries, and core dumps. First published in the specification for the application binary interface (ABI) of the Unix operating system version named System V Release 4 (SVR4),[2] and later in the Tool Interface Standard,[1] it was quickly accepted among different vendors of Unix systems. In 1999, it was chosen as the standard binary file format for Unix and Unix-like systems on x86 processors by the 86open project.By design, ELF is flexible, extensible, and cross-platform, not bound to any given central processing unit (CPU) or instruction set architecture. This has allowed it to be adopted by many different operating systems on many different hardware platforms.Linux的可執行文件格式采用了ELF格式, 而Windows采用了PE格式, 也就是我們經常使用的exe文件的格式.
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
ELF格式的結構如下
大致上可以分為這些部分
- ELF頭,在文件的最開頭,儲存了類型和版本等信息
- 程序頭, 供程序運行時解釋器(interpreter)使用
- 節頭, 供程序編譯時鏈接器(linker)使用, 運行時不需要讀節頭
- 節內容, 不同的節作用都不一樣
- .text 代碼節,保存了主要的程序代碼
- .rodata 保存了只讀的數據,例如字符串(const char*)
- .data 保存了可讀寫的數據,例如全局變量
- 還有其他各種各樣的節
讓我們來實際看一下Linux可執行程序的樣子
以下的編譯環境是Ubuntu 16.04 x64 + gcc 5.4.0, 編譯環境不一樣可能會得出不同的結果
首先創建hello.c,寫入以下的代碼
#include int max(int x, int y) { return x > y ? x : y;}int main() { printf("max is %d總結
以上是生活随笔為你收集整理的linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python find(urlopen.
- 下一篇: php round函数输出不对_Pyth