導航:首頁 > 源碼編譯 > linux下編譯32位庫

linux下編譯32位庫

發布時間:2022-09-17 23:58:40

㈠ 怎麼在64位linux機器上編譯32位的openssl庫

使用VS2005下的Visual Studio 2005 Command Prompt進入控制台模式(這個模式會自動設置各種環境變數) 、解壓縮openssl的包,進入openssl的目錄 、perl configure VC-WIN32 盡量在這個目錄下執行該命令,否則找不到Configure文件,或者指定完整的...

㈡ linux64位機器編譯32位程序出現錯誤。

32 和 64 是完全兩個不同的系統。Linux 他們的兼容,完全是基於內核的雙模式切換功能,但是因為是基於內核的。所以 32 和 64 的系統函數庫就還是沒關系。
那麼,你編譯和運行 32 位程序,就需要 64 位的函數庫介面支撐。同樣 64 位程序,也需要 64 位的函數庫提供支撐。

你這個問題,教程只讓你裝了最基本的編譯器環境,但是函數支撐環境全都沒有裝,肯定是還會提示找不到需要的函數庫的。
另外,就算你這個命令裝了需要的函數庫,也肯定只是裝了 64 位的函數庫,32 位庫也沒有裝。那麼編譯 32 位程序也會出現找不到 32 位函數庫的問題的。

你這個問題,我建議你學習兩部分:
1、Linux 的依賴關系;
2、Linux 的 mutilib 相關實現。

我建議,編譯 32 的程序請用純 32 位系統。64 位系統只編譯 64 位的程序。64 位系統只可以運行 32 位程序,不要用來編譯。Linux 裡面隨便找個程序,就會依賴很多的函數庫,這對於編譯器調用來說,會很亂的。
如果真的沒有空閑機器去單獨跑 32 位系統了,我建議要麼是 chroot 環境,要麼是用交叉編譯。不過注意這兩種方式還是需要設置。

㈢ 怎麼在64位linux機器上編譯32位的openssl庫

使用下面兩條命令編譯 setarch i386 ./Configure --prefix=/usr linux-generic32 -m32 shared make 在編譯過程中可能會碰到錯誤輸出,可能是有些依賴庫找不到 需要把輸出粘出來看看。 另外,提問最好說明你的Linux是什麼發布版

㈣ 怎麼在64位linux機器上編譯32位的openssl庫

使用VS2005下的Visual Studio 2005 Command Prompt進入控制台模式(這個模式會自動設置各種環境變數)
解壓縮openssl的包,進入openssl的目錄
、perl configure VC-WIN32
盡量在這個目錄下執行該命令,否則找不到Configure文件,或者指定完整的Configure文件路徑。
、ms\do_ms
在解壓目錄下執行ms\do_ms命令
、nmake -f ms\ntdll.mak編譯後在openssl解壓目錄下執行,完成編譯後。輸出的文件在out32dll裡面,包括應用程序的可執行文件、lib文件和dll文件
注意:在運行第五步時,cl編譯器會抱怨說.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推薦的),建議使用_read。呵呵,我可不想將OpenSSL中的所有的read函數修改為_read。再看cl的錯誤代碼 error C2220,於是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由於設置了/WX選項,將所有的警告都作為錯誤對待,所以。。。
於是打開OpenSSL目錄下的MS目錄下的ntdll.mak文件,將CFLAG的/WX選項去掉,存檔。

㈤ 64位linux編譯32位程序

在64位的Linux下,gcc 編譯 32 位程序需要添加參數 -m32 ,ld需要添加參數是 -m elf_i386。
1、Along with the -m32 flag in gcc, you may need to include the -melf_i386 flag for ld to properly link the 32bit object files to the 32bit libraries if you have both the 32bit and 64bit libraries.
2、 ld命令 ld命令是GNU的連接器,將目標文件連接為可執行程序。
3、舉例:

gcc -m32 -o hello hello.c

gcc -m32 -c hello.o hello.c
ld -m elf_i386 -o kernel main.o hello.o

㈥ 怎麼在64位linux機器上編譯32位的openssl庫

使用下面兩條命令編譯
setarch i386 ./Configure --prefix=/usr linux-generic32 -m32 shared
make

在編譯過程中可能會碰到錯誤輸出,可能是有些依賴庫找不到
需要把輸出粘出來看看。

另外,提問最好說明你的Linux是什麼發布版,這樣其它人好提供更准確的命令。

㈦ 64位linux下的GCC如何編譯出一個32位可執行程序

理論上安裝支持環境,之後 64 位的 gcc 編譯成 32 位程序,就加 -m32 參數即可。

當然還一個辦法是裝個 32 位的 gcc 。

另外,交叉編譯也適用於 x86 架構。

不過這么編譯經常會出現各種問題,所以編譯 32 位的程序,最好還是用 32 位系統。

不一定重裝,用 chroot 和 setarch 命令配合即可弄出一個 32 位的子系統。

閱讀全文

與linux下編譯32位庫相關的資料

熱點內容
web應用安全pdf 瀏覽:47
linuxintel網卡驅動下載 瀏覽:217
資源解壓後怎麼刪除 瀏覽:868
編程之美15種演算法 瀏覽:147
java的圖形用戶界面設計 瀏覽:769
算數游戲源碼 瀏覽:999
壓縮機工作聲音判斷 瀏覽:985
事業單位程序員 瀏覽:506
易語言取相似顏色源碼 瀏覽:773
pyodbclinux 瀏覽:585
vivo為什麼把伺服器沉到深海 瀏覽:460
程序員能為電商做什麼 瀏覽:401
騰訊直充qq號加密碼 瀏覽:140
qt搭建msvc編譯器環境 瀏覽:338
單片機晶振壞了會不會工作不穩定 瀏覽:770
天天影迷APP顯示連接伺服器失敗怎麼回事 瀏覽:961
鋼鐵命令同盟第七關怎麼過 瀏覽:7
android底部控制項彈出 瀏覽:43
為程序員而自豪 瀏覽:583
可以進行c語言編譯的文件名 瀏覽:384