前言
實際上屬於一種**混淆/加密的技術,大家知道python的原始檔放在那裡,大家是都可以看的,不像c語言編譯出來可以拿編譯後的東西去執行,所以就出現了這種需求。原理相當於將python編譯成c,然後再轉成.so檔案
.so檔案為動態鏈結庫,可以在程式執行時動態鏈結,類似於windows的dll檔案。
在網上搜了一下,常用的有2種方法:
準備工作
def hello():
print "hello"
使用python來操作pip install cython
from distutils.core import setup
from cython.build import cythonize
setup(
ext_modules = cythonize("hello.py")
)
python setup.py build_ext --inplace
使用gcc來編譯cython hello.py
gcc -c -fpic -i/usr/include/python2.7/ hello.c
gcc -undefined dynamic_lookup -shared hello.o -o hello.so
undefined symbols for architecture x86_64
參考 加上那個引數就好了
gcc -lstdc++ -v -shared hello.o -o hello.so
驗證
在so檔案目錄下,進入python終端,然後嘗試使用一下這個模組就可以了,如下:
>>> from hello import hello
>>> hello()
hello
參考 Mac上把python原始檔編譯成so檔案
前言 實際上屬於一種 混淆 加密的技術,大家知道python的原始檔放在那裡,大家是都可以看的,不像c語言編譯出來可以拿編譯後的東西去執行,所以就出現了這種需求。原理相當於將python編譯成c,然後再轉成.so檔案 so檔案為動態鏈結庫,可以在程式執行時動態鏈結,類似於windows的dll檔案。...
Python原始檔改寫
編寫乙個程式,讀取乙個python源程式檔案,將檔案中所有除保留字之外的小寫字母換成字母,並且生成檔案要能夠被python直譯器正確執行。以下給出程式 coding utf 8 import keyword f open test.py content f.read f.close table ra...
多個原始檔進行編譯,即 makefile 的編寫
makefile的好處是防止原始檔的重複編譯 比如有好多個原始檔,某天對其中乙個原始檔進行修改,如果不寫makefile的話,需要將整個工程的所有檔案重新編譯一遍,非常麻煩,有了makefile,說明了每個原始檔的依附關係,當某個原始檔改變的時候只需重新編譯一下關聯的原始檔就好。例如 有以下檔案 o...