在centos6.2上製作了乙個可執行程式,取名為aio_test,其實是乙個利用libaio讀寫檔案的程式。
在centos6.2上可以正常編譯,可以正常執行aio_test。
當我把aio_test直接copy到乙個suse 10的機器上時,發現提示錯誤,找不到/lib64/libuuid.so (aio_test中用到了uuid庫)。
後來才發現,suse機器的libuuid庫是放在/usr/ lib64/中的,而不是像centos放在/lib64/中,所以aio_test一直提示說找不到uuid庫。
其實這裡有乙個問題,難道同乙個可執行程式,對於不同linux發行版本,都要重新編譯一次嗎,centos一次,ubuntu一次,suse一次,等等。
目前還沒有找到答案,希望有大牛可以告訴我答案。
當我把aio_test放到suse 10中重新編譯時,發現編譯錯誤,提示說aio中的幾個介面無法鏈結,其中的乙個是io_prep_pwritev和io_prep_preadv。
這兩個介面是在libaio 0.3.109版本才有的,一檢視suse機器中/usr/lib64/libaio.h檔案時,果然沒有發現這兩個介面。
果斷從其他的suse機器上將新的libaio.h和libiao.so分別覆蓋原來的/usr/lib64/libaio.h 和/usr/lib64/libaio.so,再次編譯就通過了。
之後執行aio_test也是正常的。
python 執行可執行程式
python do exe.pyw coding utf 8 import os exe dir c program files q dir exe file q dir.exe def do cmd dir,file if os.access dir,os.f ok os.chdir dir if...
Android可執行程式
最近應用了android kernel下高通的乙個security patch,各種方式出log,也沒有走到patch處。通過網上查詢,看到有人寫了個main函式,呼叫此patch所在的module。但是建立出執行檔案,push到某家手機的 system bin下,告訴是唯讀檔案系統,不能push進...
可執行程式的組成
上一節分析了c語言應用程式中各段的情況,實際的c語言可執行程式,將由各個檔案經過連線生成。目標檔案是由每乙個c語言源程式 c 經過編譯器生成,目標檔案 o 的主要組成部分即 段 唯讀資料段和讀寫資料段三個段。未初始化資料段 堆和棧不會占用目標檔案的空間。可執行程式是由各個目標檔案經過連線而成。其主體...