python 源码如何编译-编译Python源代码

为什么可以/需要编译

一般情况下,在Windows下安装软件,只需要下载可执行文件,下一步即可完成安装。 Linux下,可以获取该软件的源代码,自行编译生成可执行文件,然后安装。 使用源代码有什么好处? 您可以根据自己的需求对软件进行更改,甚至可以修复厂商已发现但未提前更新的漏洞。 这就是开源的目的。

什么是源代码、可执行文件

源代码是用编程语言编写的程序,尽管它是文本文件,可以使用文本编辑器进行编辑。 可执行文件是操作系统可识别的二进制补码程序。 为了使源代码成为可执行文件,需要对源代码进行编译。

C语言编译器是gcc

编译的过程是怎样的

软件源代码(文本文档)+系统现有函数库,用编译器编译后生成可执行文件

函数库有什么作用? 就像Python会调用大量的外部模块/库来帮助实现一些功能一样python 源码如何编译,软件也会使用系统函数来完成一些任务,所以需要在编译时编写,以便程序运行时可以调用被执行。

制作并配置

软件通常有一个源代码文件。 自动编译每个源文件太累了。 幸运的是,有一个非常有用的工具make,可以手动完成编译过程。 那么,make是根据什么来编译的呢? 他会在当前目录中搜索Makefile/makefile,其中提供了所有需要的内容。 但这个文件并不是天生的,一成不变的。

由于各种Linux系统的内部环境不同,软件开发者会编写一个程序,手动检查环境是否符合要求,并为每个环境生成特定的Makefile/makefile,这就是configure。

值得一提的是,当源代码改变并重新编译时,make可以识别出改变的部分并进行增量更新。

压缩包文件

源代码是纯文本文件。 如果软件开发商直接提供这样的纯文本文件,就会浪费开发商的带宽,并且导致用户下载困难。

因此,就出现了Tarball文件,它是先用tar将软件的所有源代码打包,然后用压缩技术进行压缩,一般采用gzippython 源码如何编译,所以通常的扩展名是*.tar.gz或*.tgz。 不过后来出现了压缩效率更高的bzip2,所以扩展名也会有*.tar.bz2之类的。

Tarball 文件通常包含:

从 tarball 安装软件的步骤 下载源代码。 解压链接并阅读源代码所在目录中的README/INSTALL。 建议解压到/usr/local/src目录下。 ./configure'--enable-framework[=DIR]':在源码所在目录执行configure,生成Makefile。 可以指定最终可执行文件的安装目录,建议安装在/usr/local/bin/下。

./configure --enable-framework=/Users/ronald/Library/Frameworks

make:运行目录下的make程序找到Makefile,根据文件内容进行编译。 生成的可执行文件将保存在当前目录下。 makeinstall:make根据Makefile中的install选项将编译好的可执行文件安装到指定目录,完成安装。

➜  Python-2.7.9  ./configure
checking build system type... x86_64-apple-darwin14.5.0
checking host system type... x86_64-apple-darwin14.5.0
...
configure: checking for device files
checking for /dev/ptmx... yes
checking for /dev/ptc... no
checking for %lld and %llu printf() format support... yes
checking for %zd printf() format support... yes
checking for socklen_t... yes
checking for build directories... done
checking for ensurepip... no
configure: creating ./config.status
config.status: creating Makefile.pre
config.status: creating Modules/Setup.config
config.status: creating Misc/python.pc
config.status: creating Modules/ld_so_aix
config.status: creating pyconfig.h
creating Modules/Setup
creating Modules/Setup.local
creating Makefile

➜  Python-2.7.9  make
....
Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _ssl
bsddb185           dbm                dl
gdbm               imageop            linuxaudiodev
nis                ossaudiodev        readline
spwd               sunaudiodev        zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
running build_scripts
creating build/scripts-2.7
copying and adjusting /Users/chao/Downloads/Python-2.7.9/Tools/scripts/pydoc -> build/scripts-2.7
copying and adjusting /Users/chao/Downloads/Python-2.7.9/Tools/scripts/idle -> build/scripts-2.7
copying and adjusting /Users/chao/Downloads/Python-2.7.9/Tools/scripts/2to3 -> build/scripts-2.7
copying and adjusting /Users/chao/Downloads/Python-2.7.9/Lib/smtpd.py -> build/scripts-2.7
changing mode of build/scripts-2.7/pydoc from 644 to 755
changing mode of build/scripts-2.7/idle from 644 to 755
changing mode of build/scripts-2.7/2to3 from 644 to 755
changing mode of build/scripts-2.7/smtpd.py from 644 to 755
/usr/bin/install -c -m 644 ./Tools/gdb/libpython.py python.exe-gdb.py

安装程序.py

缺失.追加

卸载软件

删除安装目录

rm -rf /usr/local/bin/xxx

参考

《鸟哥的Linux私房菜》第22章软件安装:源代码和Tarball

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 python 源码如何编译-编译Python源代码 https://www.wkzy.net/game/179725.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务