折騰llvm的win32編譯

2021-09-29 03:33:43 字數 2260 閱讀 6810

lnk1107: 檔案無效或損壞: 無法在 0x2d8 處讀取.

這是由於,在c++中,lib是鏈結時用,而dll是在編譯時用.所以編譯時不用dll,而應該用lib檔案.

llvm說可以在x64機上編譯x86位,我試了幾下都不行,始終就是x64位.

還是在老機子上跑.把並行設定改小點.

又可以寫一篇文章了.寫我如何折騰llvm上的32位編譯.

說我是折騰大王,簡直沒問題.

好,開始.

cmake是折騰必備工具.

為了讓llvm能在32位上跑.我費勁心思折騰.我自己的32位機子,直接編譯是要出問題的.我也不知道在哪,我只知道,即使把並行編譯設定為2,我的機子都要宕機.即32位機子無論如何是編譯不了的(好像是32位記憶體不夠?).必須用64位.在折騰的後期發現如果你在cmake的gui中彈出的第二個框中輸入host=x64是不行的,報錯說:你是32位,不是x64主機,對不起,編譯不了.因此,就現在的最新的llvm9.0版本而言,是不可能在32位上編譯成功的,反正在我的機子上,無論如何要宕機或許你的機子神通廣大,沒問題.

為了編譯32位版本的,我找遍了網路.到處找.

主要參考在官網這裡,然而這個的參考雖多,卻無用.看嘛:

cmake_install_prefix這個選項,要設定,不然,你最後編譯後,對不起,你沒有寫入的許可權.

llvm_targets_to_build:string這個選項,毛用沒有.無論我怎麼改,始終在64位機子上都是改了沒用.毛用沒有.

llvm_build_32_bits這個玩意兒,沒用.

自己設定llvm_target_arcx86i686啥的,沒用.

cmake裡面搜尋x86_64,然後把x86_64全部手工改為i686,沒用.

cmake選項裡面新增win32為1,沒用.

最後,看見別人是大寫,用win32改為1,沒用.

然後,我看我老機子可以,我把我老機子生成的cmake全部複製過去.又是一大堆sdk版本不匹配,還有路徑配置,等等雜七雜八的,搞不定.別人說能夠重定向sdk,600多個,太多了,改不了.

然後翻來覆去的折騰,啊,就是折騰不成功.後來終於看見哦-thost=x64原來是在cmake的彈窗後面改啊.-t的都新增在這裡,我說人家為什麼有個這個選項,我該在哪改呢?,原來在這.

我記得還看見乙個命令是cmake . -a win32 -thost=x64,然而或許這個命令要在64位下試,但我可能沒試,找不著了.可能這是正確的.就是這個-a win32到底在哪改呢?.改半天,找不著,網上也沒人,好像這些人都不用32位機子了.

最後,折騰半天,在那個彈窗裡面,我又點了點其他的選項,還是沒找著,於是又上網瀏覽,好像看見-thost=x64了,別人的,別人的cmake上面直接就是win64,哦----.我終於發現.

在這個彈窗緊接著的下面有個下拉列表的選項,就是專門告訴你編譯32位還是64位的,折騰人啊,累得很.終於找著了…其實過程比我描述的還要複雜,因為有些折騰過程,我已經忘記了.太累了.可又不得不折騰.沒辦法呀.網上也找不著.這些人都公升級成64位機子了嗎?

自己摸石頭,真麻煩.用別人的東西,真麻煩.

通過本次折騰.以後就知道了在**改,交叉編譯也一定是在這裡.即在選編譯器後面就是選平台.

easylzma在Win32下編譯

2.解壓c盤或d盤根目錄後 不要解在桌面上 在解開的檔案及目錄中,建乙個build目錄,再到http www.cmake.org 下乙個win32的cmake,並安裝好,安裝過程中,有個提示,一定選擇將cmake工作檔案新增到path中 3.進入到剛剛建立的build目錄,在該目錄下開乙個cmd視窗...

Win32程式設計

win32 malloc函式的底層實現是win32api utf 16編碼以16位無符號整數為單位,注意是16位為乙個單位,不是乙個字元就只有16位,這個要看字元的unicode編碼處於什麼範圍而定,有可能是2個位元組,也可能是4個位元組現在機器上的unicode編碼一般就是指utf 16 以兩個位...

win32 使用go編譯go自身

如直接自己編譯自己,會出現下面的錯誤 cd c go src make.bat building go cmd dist using c go go tool no such tool compile go tool no such tool compile go tool no such tool...