欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

C/C++跨平臺開發(fā):macOS/Windows/MinGW下編譯libiconv靜態(tài)庫完整指南

C/C++跨平臺開發(fā):macOS/Windows/MinGW下編譯libiconv靜態(tài)庫完整指南 做跨平臺C/C開發(fā)的人遲早都會遇到字符編碼轉(zhuǎn)換這個繞不過去的坎。尤其是要把一套代碼同時跑在macOS、Windows和Linux上且還要求產(chǎn)物能干干凈凈地單獨(dú)部署的時候編譯一個libiconv的靜態(tài)庫就成了最省心的方案。這篇文章就圍繞“在macOS、Windows以及Windows下的MinGW環(huán)境中分別編譯libiconv靜態(tài)庫”這件事把我在實(shí)際項(xiàng)目里踩過的坑、試過的參數(shù)、驗(yàn)證過的產(chǎn)物整理出來。不管你是要給某個跨平臺數(shù)據(jù)處理工具準(zhǔn)備底層庫還是只想擺脫Windows上缺乏原生iconv的窘境這篇都能給你一條可以直接照著走的路徑。先說清楚我要做什么libiconv是GNU提供的字符編碼轉(zhuǎn)換庫接口簡單核心就是iconv_open、iconv、iconv_close這一組函數(shù)。Windows下沒有官方的iconv實(shí)現(xiàn)MSVC環(huán)境通常用第三方移植版或者干脆自己封裝而macOS系統(tǒng)自帶的iconv實(shí)際上是libiconv的舊版本但頭文件和鏈接庫的位置不算特別規(guī)矩如果你要帶一套固定版本的庫隨程序發(fā)布或者要交叉編譯給某個嵌入式目標(biāo)自己動手編譯靜態(tài)庫幾乎是必須的。MinGW則是Windows上另一條常用路線用GCC工具鏈編譯出原生Windows程序這時候libiconv的靜態(tài)版本同樣能幫我們避免一堆DLL加載問題。整個文章的核心思路是這樣的不繞彎子三種場景分開講每個場景都給出完整命令、關(guān)鍵參數(shù)的含義、以及我實(shí)測過能用的產(chǎn)物驗(yàn)證方法。中間還會穿插我在某跨平臺項(xiàng)目中遇到的實(shí)際報錯和排查過程這部分內(nèi)容普通文檔里不會寫但往往才是真正卡人的地方。1. 為什么非要用libiconv靜態(tài)庫1.1 Windows和macOS上的iconv到底有什么坑先說Windows。很多人第一反應(yīng)是Windows不是有MultiByteToWideChar和WideCharToMultiByte嗎確實(shí)有但那兩個API只能解決ANSI/UTF-16/UTF-8之間有限幾種轉(zhuǎn)換遇到GBK、BIG5、Shift-JIS這種歷史遺留編碼再遇到編碼之間互相轉(zhuǎn)換比如GBK直接轉(zhuǎn)Shift-JISWindows原生API幾乎沒有可用途徑。更麻煩的是Windows上不同版本的UCRT、MSVCRT對代碼頁的處理還有差異同樣的代碼在Win10上跑得好好的換到Win7又變了一副面孔。這就是為什么跨平臺項(xiàng)目幾乎清一色選擇libiconv它把編碼轉(zhuǎn)換統(tǒng)一成一個抽象層一份代碼在所有平臺行為一致。再說macOS。macOS確實(shí)自帶iconviconv.h在系統(tǒng)SDK里也能找到直接#include iconv.h然后鏈接-liconv似乎就行了。但這里有個隱蔽的問題macOS自帶的iconv版本更新節(jié)奏非常慢且Apple對它的自定義改動不少具體行為未必和GNU libiconv完全一致。比如某些邊緣編碼的轉(zhuǎn)換差異、錯誤處理方式、線程安全問題踩到了就很頭疼。如果項(xiàng)目里需要確保所有平臺使用同一個iconv實(shí)現(xiàn)版本而不是“隨系統(tǒng)心情”那就必須自己編一份靜態(tài)鏈接進(jìn)程序。1.2 靜態(tài)庫相比動態(tài)庫在這件事上贏在哪既然要自己編為什么不編動態(tài)庫非要用靜態(tài)庫最直接的理由是部署。Windows上動態(tài)庫意味著要帶一個iconv.dll在exe旁邊再加上依賴鏈上的libcharset.dll弄丟一個整個程序就起不來。macOS上動態(tài)庫雖然可以用install_name_tool調(diào)整加載路徑但帶上rpath的處理簽名、公證的時候也會多一些麻煩。而靜態(tài)庫只需要在鏈接階段把.a或.lib文件吃進(jìn)去最終產(chǎn)物就是一個獨(dú)立的可執(zhí)行文件復(fù)制到任何同架構(gòu)的機(jī)器上都能直接運(yùn)行不需要關(guān)心目標(biāo)機(jī)器上有沒有對應(yīng)的動態(tài)庫、版本夠不夠新。其次靜態(tài)鏈接能讓最終程序的行為更可控。動態(tài)庫的版本由運(yùn)行環(huán)境決定今天編譯時用的符號在這個版本上存在用戶機(jī)器上的老版本庫可能根本沒有這個符號或者行為完全不同。而靜態(tài)庫把實(shí)現(xiàn)完整鎖進(jìn)產(chǎn)物里源代碼是什么版本運(yùn)行就是什么版本。對講究可復(fù)現(xiàn)、需要長期維護(hù)的項(xiàng)目來說這個優(yōu)勢非常關(guān)鍵。這里補(bǔ)充一個我的經(jīng)驗(yàn)靜態(tài)鏈接也有代價體積會增加、多個庫之間可能有符號沖突、安全更新時不能只替換動態(tài)庫。但如果權(quán)衡部署穩(wěn)定性和行為一致性libiconv這種小而穩(wěn)定的庫靜態(tài)鏈接幾乎是當(dāng)下最平衡的選擇。2. 編譯前必須理清的三個平臺差異2.1 源碼與構(gòu)建體系先認(rèn)識GNU autotoolslibiconv的源碼包雖然是GNU項(xiàng)目但真正拿到手后發(fā)現(xiàn)它不止是“一堆C文件”而是基于autoconf/automake組織的一套標(biāo)準(zhǔn)構(gòu)建體系。解壓后你會看到configure、Makefile.in、config.h.in這些文件。它的構(gòu)建邏輯是先運(yùn)行./configure探測當(dāng)前系統(tǒng)的編譯器、頭文件、庫特性生成對應(yīng)的config.h和Makefile再執(zhí)行make編譯。這點(diǎn)很重要因?yàn)閃indows原生環(huán)境下沒有一個“標(biāo)準(zhǔn)shell”來跑configure腳本我們得想辦法讓這套autotools體系在Windows上活過來。三個平臺的實(shí)際差異主要集中在三處終端與shell環(huán)境、編譯器選擇、以及生成的目標(biāo)格式。下面這個表格幫大家快速對照平臺/場景默認(rèn)終端常用編譯器生成目標(biāo)macOSTerminalbash/zshclang自帶libiconv.aMach-O靜態(tài)庫Windows MSVCDeveloper Command Promptcl.exeiconv.libCOFF靜態(tài)庫Windows MinGWMSYS2終端或CMDgcc.exelibiconv.aPE靜態(tài)庫三條路線對應(yīng)三種不同的頭文件和庫格式不能混用。MSVC編譯出來的.lib不能給MinGW鏈接MinGW編出來的.a也不能給MSVC用。這是第一次做跨平臺編譯的人最容易忽略的地方。2.2 工具鏈準(zhǔn)備不同場景該裝什么macOS側(cè)只需要一個Xcode Command Line Tools。打開終端執(zhí)行xcode-select --install裝好就有clang、make、ar、ranlib這些基礎(chǔ)工具。要注意的是別用系統(tǒng)自帶的/usr/bin/make版本太老的問題實(shí)際用下來預(yù)裝的GNU Make 3.81編譯libiconv完全夠用不需要額外裝新版本。Windows MSVC路線有兩套準(zhǔn)備方式。一是裝完整版Visual Studio從“開始菜單”里打開“x64 Native Tools Command Prompt for VS”這個環(huán)境變量已經(jīng)幫你配好了cl.exe、nmake.exe和SDK路徑。二是只裝Build Tools命令行使用vcvars64.bat配置環(huán)境這條適合不想安裝完整IDE的人。我自己的項(xiàng)目用的是Build Tools路線因?yàn)闃?gòu)建服務(wù)器上不需要圖形界面。Windows MinGW路線準(zhǔn)備方式得細(xì)說。MinGW本身有很多發(fā)行版常見的是MinGW-w64但為了跑configure腳本和make我更推薦直接裝MSYS2然后在MSYS2里安裝mingw-w64-x86_64-gcc。這樣你既有MinGW的GCC工具鏈又有了一個Unix風(fēng)格的shell環(huán)境處理autotools構(gòu)建會順暢非常多。官方安裝包地址網(wǎng)上很容易找到安裝完成后在開始菜單打開“MSYS2 MSYS”終端執(zhí)行pacman -S mingw-w64-x86_64-gcc base-devel就能把編譯環(huán)境備齊。這里強(qiáng)調(diào)一下MSYS2里有兩套環(huán)境MSYS環(huán)境編譯出來的東西依賴MSYS運(yùn)行時MINGW64環(huán)境編譯出來的才是純Windows原生程序。我們做libiconv靜態(tài)庫必須在MINGW64環(huán)境中操作。2.3 靜態(tài)庫的產(chǎn)物形態(tài)與命名差異編譯完成后三種環(huán)境下得到的靜態(tài)庫文件名和格式都不同先建立這個預(yù)期后面驗(yàn)收時就能對號入座。macOS下產(chǎn)出的是libiconv.a這是一個Mach-O格式的靜態(tài)庫內(nèi)部的object文件后綴是.o用ar -t libiconv.a可以列出里面的成員。Windows MSVC下產(chǎn)出的是iconv.lib這是一個COFF格式的靜態(tài)庫但要注意MSVC的.lib有兩種情況一種是真正的靜態(tài)庫另一種是導(dǎo)入庫import library只是告訴你符號在哪個DLL里。我們編譯的是前者鏈接時直接把代碼合入exe。區(qū)分方法可以用dumpbin /headers iconv.lib查看文件頭或者在同一個目錄下看有沒有對應(yīng)的iconv.dll沒有DLL的話基本可以確定是真靜態(tài)庫。Windows MinGW下產(chǎn)出的是libiconv.a雖然擴(kuò)展名和macOS一樣但格式是COFF只能給MinGW的GCC鏈接器用。這三種格式互不通用這點(diǎn)必須牢記給MSVC工程用的庫不能拿MinGW編出來的.a去糊弄。3. 實(shí)操macOS上的靜態(tài)編譯3.1 獲取源碼與目錄規(guī)劃先到GNU官網(wǎng)的libiconv下載目錄拿源碼包我這邊用的是1.17版本穩(wěn)定且API變化不大。下載后執(zhí)行tar -xzf libiconv-1.17.tar.gz cd libiconv-1.17這里建議單獨(dú)建一個output目錄把編譯結(jié)果統(tǒng)一放進(jìn)去。因?yàn)槟J(rèn)的configure會把頭文件和庫文件安裝到/usr/local我不想污染系統(tǒng)的/usr/local更希望所有產(chǎn)物都收納在當(dāng)前工程目錄里方便后續(xù)打包。mkdir -p /tmp/libiconv-macos/build-output實(shí)際開發(fā)中我習(xí)慣在工程目錄內(nèi)建third_party/libiconv-macos這樣做的好處是第三方庫和項(xiàng)目源碼一起納入版本管理新同事拉下來不需要額外裝庫。不過這只是目錄組織的偏好核心編譯命令不變。3.2 configure參數(shù)逐個解釋在源碼根目錄指定--prefix為輸出目錄然后手動指定三個參數(shù)./configure \ --prefix/tmp/libiconv-macos/build-output \ --disable-shared \ --enable-static \ CCclang CFLAGS-O2 -arch arm64逐個說明這些參數(shù)的作用--prefix安裝路徑編譯完成后make install會把頭文件裝到build-output/include庫文件裝到build-output/lib。這相當(dāng)于一個“本地虛擬安裝”不碰系統(tǒng)目錄。--disable-shared明確禁止生成動態(tài)庫只生成靜態(tài)庫。libiconv默認(rèn)會同時編靜態(tài)和動態(tài)如果不禁用動態(tài)庫你會看到一堆.dylib文件那不是我們想要的。--enable-static雖然默認(rèn)靜態(tài)庫就是啟用的但顯式寫出來可以讓configure腳本的人一眼看懂意圖。CCclang指定編譯器。macOS上默認(rèn)CC可能是cc它其實(shí)是指向clang的但顯式指定更穩(wěn)當(dāng)。CFLAGS-O2 -arch arm64-arch arm64是針對Apple Silicon的如果是在Intel mac上編譯去掉這個參數(shù)或者改成-arch x86_64如果希望生成通用二進(jìn)制可以寫-arch arm64 -arch x86_64但要注意那樣生成的.a是胖二進(jìn)制體積會增大多數(shù)場景其實(shí)只需要當(dāng)前架構(gòu)。3.3 make與產(chǎn)物驗(yàn)證接下來執(zhí)行make -j8 make install-j8用8個并行任務(wù)編譯速度會快不少。如果機(jī)器配置一般改成-j4也可以。整個編譯過程的輸出里如果出現(xiàn)warning一般不影響最終結(jié)果但看到error就必須停下來看日志。編譯完成后檢查產(chǎn)物ls -la /tmp/libiconv-macos/build-output/lib正常情況下你會看到libiconv.a、libcharset.a兩個靜態(tài)庫以及l(fā)ibiconv.la這個libtool描述文件實(shí)際鏈接時用不到。頭文件方面include/iconv.h是我們要的東西include/libcharset.h是輔助頭通常不用直接引入。驗(yàn)證一下庫里的符號nm /tmp/libiconv-macos/build-output/lib/libiconv.a | grep _iconv_open看到_iconv_open和_iconv這幾個符號就說明編譯成功了。這里加下劃線是Mach-O的C符號命名規(guī)則在Windows的COFF里沒有這個下劃線前綴驗(yàn)證時不要對照錯。這一步我在某跨平臺終端工具中實(shí)際跑過一次整套下來不到兩分鐘。macOS下libiconv的編譯是三條路線里最順的主要原因是autotools體系本來就是為Unix-like系統(tǒng)設(shè)計的在這個環(huán)境里幾乎不會出幺蛾子。4. 實(shí)操Windows上的兩種編譯路線4.1 MSVC原生編譯讓autotools在Windows shell里干活MSVC路線麻煩一些因?yàn)閏onfigure是個shell腳本W(wǎng)indows CMD里沒法直接執(zhí)行而Developer Command Prompt又只提供了命令行環(huán)境沒有bash。解決辦法是先裝一個Git for Windows它自帶bash.exe可以在CMD里調(diào)用讓autotools腳本在bash環(huán)境中運(yùn)行但編譯器仍然指定為MSVC的cl.exe。大致的完整流程如下。先打開“x64 Native Tools Command Prompt for VS”在這個環(huán)境里已經(jīng)配置好了cl、nmake、SDK路徑。然后執(zhí)行set MSYS2_PATH_TYPEinherit C:\Program Files\Git\bin\bash.exe --login -i這樣進(jìn)入bash后環(huán)境變量繼承了當(dāng)前CMD里的MSVC變量。然后在bash里進(jìn)入源碼目錄執(zhí)行configure./configure --prefix/tmp/libiconv-windows-msvc \ --disable-shared --enable-static \ CCcl CFLAGS-O2 -MT這里CCcl是關(guān)鍵直接把編譯器指向MSVC的cl.exe。-MT參數(shù)讓運(yùn)行時庫使用靜態(tài)版這樣最終exe不依賴msvcp140.dll、vcruntime140.dll這些動態(tài)運(yùn)行庫程序復(fù)制到別的Windows機(jī)器上更容易跑起來。然后構(gòu)建時不能用make因?yàn)閍utotools生成的Makefile里寫用的是make而MSVC環(huán)境下更好用的是nmake。實(shí)際操作中我見過有人直接用make也過了因?yàn)镚it bash環(huán)境里帶了GNU Make它也能解析autotools生成的Makefile但最終調(diào)用CC時用的是cl所以核心還是MSVC工具鏈。穩(wěn)妥起見建議這樣執(zhí)行make -j8 make install如果中間報nmake相關(guān)的錯誤或者M(jìn)akefile語法問題可以嘗試把make改成用nmake -f Makefile.msvc但libiconv官方實(shí)際上沒提供完整的MSVC專用Makefile多數(shù)情況還是要走autotools生成的Makefile。實(shí)測Git bash里用GNU make是最順的方案。產(chǎn)物驗(yàn)證時檢查/tmp/libiconv-windows-msvc/lib目錄會得到iconv.lib和charset.lib兩個文件。用dumpbin /symbols iconv.lib如果能列出iconv_open等符號說明庫沒問題。注意MSVC的靜態(tài)庫沒有.a擴(kuò)展名鏈接時直接在Project屬性里加上這個iconv.lib即可。這一步我印象很深最初一直以為MSVC下必須手工寫DEF文件或者用第三方預(yù)編譯包繞了好大一圈才發(fā)現(xiàn)autotools在Git bash cl的組合下就能直接工作關(guān)鍵是CCcl變量別被bash默認(rèn)的gcc覆蓋掉。4.2 MinGW編譯最省心的一條Windows路線MinGW路線的體驗(yàn)是真的好很多因?yàn)镸SYS2環(huán)境天然就是Unix風(fēng)格的shell。打開“MSYS2 MINGW64”終端注意不是MSYS終端確認(rèn)gcc -v能看到x86_64-w64-mingw32-gcc然后進(jìn)入源碼目錄直接執(zhí)行./configure \ --prefix/tmp/libiconv-mingw64 \ --disable-shared \ --enable-static \ CCgcc CFLAGS-O2 -static-libgcc -static-libstdcMinGW下GCC默認(rèn)鏈接libgcc的某些部分還是動態(tài)引入的如果希望最終exe完全獨(dú)立運(yùn)行-static-libgcc能避免對libgcc_s_seh-1.dll的依賴。libiconv的源碼本身是純C不依賴libstdc但加上這個參數(shù)能防止后續(xù)自己的項(xiàng)目里鏈接了C代碼時被動態(tài)庫問題偷襲。當(dāng)然如果項(xiàng)目里沒有C代碼-static-libstdc可加可不加。然后make -j8 make install這個過程一般非常順利基本一條命令走到黑不會像MSVC路線那樣有各種環(huán)境變量問題。產(chǎn)物檢查ls /tmp/libiconv-mingw64/lib你會看到libiconv.a、libcharset.a。注意這里的libiconv.a和macOS下的libiconv.a雖然文件名一樣但格式不同一個是COFF一個是Mach-O不能交叉使用。驗(yàn)證符號時使用nm /tmp/libiconv-mingw64/lib/libiconv.a | grep iconv_openMinGW的COFF符號不像MSVC那樣帶下劃線前綴但nm輸出中可能顯示為T iconv_open、T _iconv_open這是因?yàn)镸inGW內(nèi)部對符號名做了修飾實(shí)際鏈接時用-liconv就行了不需要你手動處理前綴問題。我在某個Windows數(shù)據(jù)采集客戶端里用的就是這套MinGW編譯的靜態(tài)庫配合-static和-static-libgcc最終exe在幾臺沒裝任何運(yùn)行庫的干凈Windows測試機(jī)上都能直接跑起來效果很理想。4.3 兩種Windows路線的選擇建議MSVC和MinGW兩條路線各有領(lǐng)土不是一個替代另一個的關(guān)系。如果項(xiàng)目主工程是Visual Studio解決方案那肯定選MSVC編譯的iconv.lib因?yàn)閂S工程無法直接鏈接MinGW的.a文件。反過來如果項(xiàng)目用CMake且工具鏈?zhǔn)荕inGW或者你在做跨平臺腳本構(gòu)建MinGW路線更合適因?yàn)樗臉?gòu)建過程幾乎無摩擦。另外有一點(diǎn)需要提醒很多在線教程會直接讓你下載別人編譯好的iconv.dll或libiconv.a塞進(jìn)項(xiàng)目里這種做法在個人小工具里可能行得通但放到正式產(chǎn)品里會埋雷。來源不明的二進(jìn)制無法保證和源碼版本一致、無法復(fù)現(xiàn)構(gòu)建過程也說不清有沒有被人動過手腳。自己走一遍編譯流程并不難卻能把這些問題一次解決干凈。5. 典型編譯報錯與排查實(shí)錄5.1 configure階段找不到編譯器或者頭文件最常見的報錯是checking for gcc... no checking for cc... no configure: error: no acceptable C compiler found in $PATH這個八成是工具鏈沒配置好。在MSVC路線下忘了在正確的Developer Command Prompt里啟動git bash就會這樣在MinGW路線下開了MSYS終端而不是MINGW64終端也會這樣。排查方法是先執(zhí)行which cl which gcc如果輸出為空說明工具鏈不在PATH里回到工具鏈配置那一步檢查。另一個常見錯誤是configure: error: C compiler cannot create executables這時候要往前面翻日志看具體原因?,F(xiàn)在常見的是缺少對應(yīng)的SDK鏈接庫。MSVC環(huán)境下如果你用Build Tools而不是完整Visual Studio很容易漏裝Windows SDK的庫文件部分導(dǎo)致鏈接測試程序時失敗。解決方法是回到Visual Studio Installer里勾選“使用C的桌面開發(fā)”工作負(fù)載確保Windows SDK組件已經(jīng)裝上。5.2 編譯到一半卡在某個源文件如果報錯說某個.c文件找不到頭文件比如stdlib.h或stdio.h多半是頭文件搜索路徑?jīng)]配好。MSVC環(huán)境下要確認(rèn)環(huán)境里執(zhí)行過vcvars64.batMinGW環(huán)境下要確認(rèn)mingw-w64-x86_64-gcc以及配套的頭文件包已經(jīng)裝好。MSYS2可以用pacman -S mingw-w64-x86_64-gcc和pacman -S mingw-w64-x86_64-headers來補(bǔ)齊。c89/c99標(biāo)準(zhǔn)相關(guān)的warning不用怕舊版本的libiconv源碼用的是老式C風(fēng)格在GCC的新版本下會刷出一堆declaration warning不影響生成目標(biāo)代碼。只要沒出現(xiàn)error讓它編完就好。5.3 鏈接階段的最典型翻車現(xiàn)場我記得在某跨平臺圖像處理Demo里接過這樣的報錯cannot find -liconv排查方法很簡單確認(rèn)libiconv.a真的存在于指定的-L目錄中且文件名沒有拼錯。GCC的-liconv默認(rèn)尋找的是libiconv.a或libiconv.so。如果你把文件命名成iconv.lib那MinGW的GCC是找不到的必須改名或者在CMakeLists里顯式指名-l:libiconv.a。還有一個MSVC下容易踩的坑鏈接iconv.lib時報LNK2001外部符號無法解析比如_iconv_open無法解析。原因往往是頭文件部分已經(jīng)通過MSVC編譯但編譯器實(shí)際生成的符號名和你用頭文件聲明的不同。最常見的是iconv.h里定義了iconv_open為libiconv_open的宏或者反過來。libiconv的頭文件里有一系列宏用來處理不同平臺下名字可能是iconv_open還是libiconv_open的問題。如果出現(xiàn)奇怪的符號沖突可以打開iconv.h查閱LIBICONV_PLUG相關(guān)宏定義或者直接在代碼里調(diào)用libiconv_open試試配合nm查看靜態(tài)庫里實(shí)際導(dǎo)出的符號名來確認(rèn)。5.4 看似成功但運(yùn)行時行為怪異這個坑很少人提但很陰編譯出的靜態(tài)庫本身沒問題鏈接也成功但程序運(yùn)行到字符轉(zhuǎn)換時返回(size_t)-1errno是EILSEQ。這種問題往往和庫本身無關(guān)而是編碼名不對。libiconv支持的編碼名是特定的比如UTF-8、GB2312、BIG5但如果你傳的是utf8或GBK這種變體某些版本上會識別不出來。穩(wěn)妥做法是用iconv -l列舉系統(tǒng)支持的編碼名——在libiconv源碼目錄里編譯出一個iconv命令行工具然后./iconv -l查看。這個工具在編譯過程中自然會生成位于./tools/iconv或源碼根目錄下不同版本位置略有差異。5.5 常見問題速查表癥狀最常見原因排查/解決方向configure: no acceptable C compilerPATH里沒有編譯器檢查which cl/gcc確認(rèn)工具鏈環(huán)境C compiler cannot create executables缺SDK鏈接庫重新安裝Visual Studio組件或MinGW-w64依賴包找不到iconv.h頭文件搜索路徑未包含include目錄-I指向build-output/includecannot find -liconv庫文件不在-L路徑或命名不對確認(rèn)libiconv.a存在且文件名正確MSVC下LNK2001符號無法解析編碼名宏沖突或者靜態(tài)庫與編譯器格式不匹配檢查iconv.h宏定義用dumpbin查看庫的實(shí)際符號運(yùn)行時返回EILSEQ編碼名不被識別用iconv -l查官方支持的編碼名鏈接成功但exe缺DLL編譯時沒開-static或-MTMinGW加-static -static-libgccMSVC用/MT6. 把靜態(tài)庫接進(jìn)項(xiàng)目的幾個實(shí)際建議6.1 頭文件與宏定義的正確搭配使用靜態(tài)庫時編碼轉(zhuǎn)換代碼里的頭文件寫法要注意#include iconv.h但如果你的項(xiàng)目同時可能接觸到系統(tǒng)自帶的iconv需要重點(diǎn)審視iconv.h里L(fēng)IBICONV_PLUG這個宏。這個宏存在是為了做兼容層設(shè)計當(dāng)系統(tǒng)已經(jīng)有一個iconv時可以通過定義LIBICONV_PLUG讓libiconv使用系統(tǒng)iconv的符號名但當(dāng)我們靜態(tài)鏈接自己編譯的libiconv時通常不需要定義這個宏直接讓libiconv把自己的iconv_open等符號暴露出來即可。為了避免符號沖突libiconv其實(shí)把實(shí)際導(dǎo)出符號定義成了libiconv_open等帶前綴的名字然后通過宏在頭文件里映射成iconv_open。這意味著如果你同時鏈接了其他也提供iconv_open的庫就會出現(xiàn)重復(fù)定義或者符號被覆蓋。解決思路是在編譯自己的C文件時統(tǒng)一使用#define LIBICONV_PLUG或統(tǒng)一不定義并確保所有源文件使用同一個iconv.h頭文件不要讓不同編譯單元各看各的頭文件。這一點(diǎn)在大型項(xiàng)目里尤其重要分散在多個CMakeLists里的子項(xiàng)目很容易出現(xiàn)“有的編譯單元用系統(tǒng)頭有的用libiconv頭”的混亂局面。6.2 CMake集成示例如果是CMake工程以下是我實(shí)際在用的模板支持三個平臺自動選擇對應(yīng)的靜態(tài)庫if(APPLE) set(ICONV_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libiconv-macos/lib/libiconv.a) set(ICONV_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libiconv-macos/include) elseif(WIN32 AND MSVC) set(ICONV_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libiconv-msvc/lib/iconv.lib) set(ICONV_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libiconv-msvc/include) elseif(WIN32 AND MINGW) set(ICONV_LIBRARY ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libiconv-mingw64/lib/libiconv.a) set(ICONV_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/libiconv-mingw64/include) endif()CMake里引用時add_executable(my_tool main.c) target_include_directories(my_tool PRIVATE ${ICONV_INCLUDE_DIR}) target_link_libraries(my_tool PRIVATE ${ICONV_LIBRARY})注意在Windows下最好再給my_tool傳入/MT或-static相關(guān)flag讓整個可執(zhí)行文件不依賴運(yùn)行時DLL。這屬于工程級配置和libiconv本身無關(guān)但直接決定最終產(chǎn)品能否“一個exe走天下”。6.3 統(tǒng)一的二進(jìn)制符號處理在Windows上如果你同時使用MSVC編譯的某個庫和MinGW編譯的libiconv那么至少要確認(rèn)所有庫都是用同一套C運(yùn)行時編譯的。MSVC有/MD動態(tài)運(yùn)行庫和/MT靜態(tài)運(yùn)行庫之分MinGW有-static和動態(tài)之分混著鏈接輕則鏈接告警重則運(yùn)行時崩潰。最省心的策略是整個項(xiàng)目統(tǒng)一用靜態(tài)運(yùn)行時MSVC每個編譯單元都加/MTMinGW統(tǒng)一加-static -static-libgcc。這樣它們之間的內(nèi)存管理、CRT啟動邏輯才能保持一致否則一個庫在A運(yùn)行時里malloc、在B運(yùn)行時里free結(jié)果往往是一聲不吭地崩掉。7. 關(guān)于編譯性能與庫體積的補(bǔ)充思考靜態(tài)庫寫進(jìn)exe之后體積增幅是很有限的。我實(shí)測libiconv 1.17在MinGW編譯、O2優(yōu)化下libiconv.a大約幾百KB鏈接進(jìn)exe后最終二進(jìn)制增幅也就在百KB級別。對現(xiàn)代程序來說這點(diǎn)體積完全可以接受。但如果你的場景極度敏感可以考慮裁剪編碼支持在configure時指定--enable-extra-encodings之類的參數(shù)或者編譯后手工裁剪不需要的編碼表。不過這不是常規(guī)操作而且libiconv的編碼數(shù)據(jù)多半是靜態(tài)表裁剪收益不大風(fēng)險卻不小——真用到被裁掉的編碼時你根本想不到是這個原因。所以我個人建議保持默認(rèn)全量編譯省心最重要。編譯速度方面三個平臺基本都在分鐘級以內(nèi)幾乎不構(gòu)成工程瓶頸。反而是版本升級和重新編譯的流程更容易被忽視update libiconv后務(wù)必同時更新三個平臺的靜態(tài)庫和頭文件避免Mac上用了新版、Windows還在用舊版結(jié)果同一套源碼在兩邊行為不一致。這種跨平臺差異類bug比編譯錯誤難查一個數(shù)量級。8. 一些經(jīng)驗(yàn)總結(jié)與避坑心得走了這幾輪編譯流程幾個體會非常深。第一別小看環(huán)境變量和路徑問題。三套路線的大多數(shù)報錯都集中在“工具鏈沒在這個終端里生效”而不是代碼本身。每次編譯前先在終端里執(zhí)行which gcc、cl或xcode-select -p確認(rèn)工具鏈在位能省掉大量看起來莫名其妙的報錯。第二不同平臺的產(chǎn)物命名差異要提前接受。macOS下的libiconv.a、MSVC下的iconv.lib、MinGW下的libiconv.a文件名只是表象真正要緊的是靜態(tài)庫格式和符號規(guī)則。把它們按平臺放進(jìn)不同的third_party目錄用CMake或類似構(gòu)建系統(tǒng)做平臺分支才是最省力的管理方式。第三不要用網(wǎng)上隨手下載的預(yù)編譯庫替代自己編譯。并不是說所有第三方預(yù)編譯包都有問題而是你無法確認(rèn)它的編譯參數(shù)、版本和完整來源這在正式項(xiàng)目里引入的風(fēng)險完全不值得。自己編譯的靜態(tài)庫至少你清楚它來自哪個版本源碼、用了什么CFlags、包含哪些模塊。第四碰到奇怪的鏈接錯誤第一步永遠(yuǎn)是nm或dumpbin查看靜態(tài)庫的真實(shí)符號不要憑頭文件猜。頭文件里的宏映射和實(shí)際導(dǎo)出符號之間的偏差是這類工作里最棘手也最常見的坑。最后再分享一個小技巧編譯好的三個平臺靜態(tài)庫和頭文件我會連同源碼版本號一起歸檔在項(xiàng)目倉庫的third_party/libiconv-1.17目錄下目錄內(nèi)放一個README.md記錄每套庫的編譯時間、編譯器版本、configure參數(shù)。三個月后再來維護(hù)這個項(xiàng)目或者有新同事接手看到這份記錄能省下大把重新摸索的時間??缙脚_靜態(tài)庫這活兒本身的編譯時間不長真正容易出問題的全是“當(dāng)時沒記錄下來的細(xì)節(jié)”。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情AV在线| 五月丁香六月情| 人人草人人爱| 色激情五月天| 色久播播| 亚洲精品性色| 婷婷激情五月综合| 久久刺激网| 夜夜撸夜夜骑| 大伊香蕉玖玖爱| 色婷婷五月天天天天天天天天天| 日本久久婷| 国内自拍97在线| 五月在线| 亚洲色情久久| 欧美色九| 丁香婷婷综合激情五月色| 97香蕉碰碰人妻国产欧美| 日韩精品成人在线| 五月天激情美女久久| 97色婷婷| 五月丁香花激情综合网| 久久综合五月天激情小说网站 | 91伦| 成人色情五月天婷婷丁香| 91色操| 99热99思午夜精品| 丁香亚洲婷婷五月| 欧洲永久精品| 天天干天天 亚洲| 国产激情综合五月久久| 亚洲九区| 午夜少妇在线观看视频| 欧美激情Va| 成人AV在线电影| 色婷婷影| 人人爽天天爽| 停停综合色色| 噜噜操操| 久久久久久综合五月婷婷| 成人短视频在线观看| 亚州第一黄网| 五月丁香婷婷潮喷中文字幕| 精品综合网在线| 2050人人操免费工开爱| 久久精品99国产精品日本| 五月丁香综合激情| 丁香五月www| 久久久五月激| 欧美日韩欧美| 人人操人人爱丁香五月| 婷婷94s| 骚货艹网站视频| 夜夜操,天天撸| 琪琪色五月婷婷老师| 乱码操操| 影视av久久久噜噜噜噜噜三级| 日韩AV成人电影| 欧美美女国产日韩一区二区久 | 丁香五月婷婷综合激情啪啪啪| 色综合色综合婷婷热| 天天操天天干天天日| 色五月天堂| 久久草大香蕉| 婷婷五月天另类网站| 色色色综合色| 9有码中文| 九九视频这里是精品五月| 亚洲国产另类av| 九九久久99精品免费观看www| 久久久香| 操b视频在线观看一区二区| 99爱无码| 丁香五月婷婷深爱综合激情 | 永久99免费视频网站| 六月激情网| 日韩无码专区| 疯狂做受XXXX高潮A片| 伊人五月人妻精品| 丁香六月综合激情| www.十八禁不禁AV.com| 久超超碰| 亚洲区在线| 99小精品| AV大片在线观看| 亚洲12p| 亚洲中文乱字字幕在线永久| 四色五月婷婷在线观看| 最新亚洲色色网| 五月婷婷精品| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 九九色播五月丁香| 五月丁香花免费视频| 婷婷基地成人五月天| 亚洲综合色婷| 草了bav视频在线观看| 九九色图| 99热官网| 九月大香蕉| 日本色色色| 五月激情天天干| 久一这里有精品国产| 影音先锋男人资源站一区二区| 99操| 婷婷五月丁香六月| 色五月婷婷激情| 99热精国产这里只有精品| 五月情丁香色| 九热视频精品| 操婷婷久久| 啪啪视频99| 五月天社区| 超碰99热精品| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 黄网网站在线播放| 久热亚洲| 国产AV一区二区三区日韩| 无码激情AAAAA片-区区| www.五月天色色.com| 天天搞天天色综合| 欧美Va婷色| 丁香美女五月天婷婷| 亚洲五月天婷婷| 五月亭亭狠狠| 综合色五月天| 亚洲激情四射| 日B日潘金莲BB| 9 1超碰九色| 五月亭亭直播| 日日肏天天操| 成人av中文字幕| 日韩啪啪网| 六月婷婷视频| 色婷婷五月中文字幕在线dvd| 亚洲色综久久五月| 思思热99热| 五月婷婷五月色| 丁香六月伊人| 天天色视频| 久久婷婷五月天懂色| 国产美女无遮挡裸体毛片A片| 久操乱| 国产99久久久国产精品免费看| 无码激情AAAAA片-区区| 六月丁花香啪啪激情欧美| 日木WWW视频| 九久九精品| 六月丁香啪| 婷婷综合在线播放| 久99| 亚洲精品久久久久久久久久吃药| 激情婷婷久久| 67194国产| 九久久九精品视频| WWW免费视频碰碰碰碰| 欧美精品999| 天天干,天天舔| 婷婷综合五月色播| 噜噜视频| 97超级碰碰碰久久久| 六月激情婷婷| 丁香婷婷五月基地| AV九九| 99热热热99精品婷婷| 婷婷五月欧美| 婷婷激情五月天7| 99免费视频在线观看爱| 亚洲操操操| 狠狠色九月| 亚洲五月丁香综合网| 九九九九九无码| 26uuu| 成人丁香五月| 成人国产欧美大片一区| 97热久久五月婷婷| 99热这里只有精品16| 小香蕉av| 五月天婷婷在线啪啪视频| 99自拍视频在线观看| 91视频精品99| 天天干天天爽| AV成人在线播放| 五月婷婷丁香av| 免费观看全黄做爰的视频 | 五月丁香综合激情| 色婷操逼| 久久久久久激情| 九九色插| 五月天玖玖狠狠色色| 天天干电影| 超碰婷婷五月| WWW.99热| 97婷婷色| 那里有AV网址| 国产亚洲精品AAAAAAA片| 五月丁香网av| 五月天婷婷无码| ,99视频久久| 五月婷婷激情综合av| 99caobi| 五月丁香婷爱在线| 99视频日韩| 我爱va亚洲va52| 五月天成人综合| 99riAV国产精品视频| 日日夜夜狠狠干| 五月天偷拍| 国熟女视频| 97啪在线观看视频| 久草xx性爱视频| 一起操最新网址| 亚洲狠狠操| 丁香五月婷婷国产av| 婷婷五月天av| 夜夜夜夜夜操| 免费婷婷| 超碰9799| 这里只有精品9| WWW.国产| 97色五月天| 亚洲综合成人网| 六月丁香中文字幕| 色噜噜狠狠色综合网| 色婷婷丁香六月| 久久九九思思| 97操操操| 五月天丁香网| 97婷婷丁香五月| 另类视频在线| 色婷婷激情四射视频| 天天爽天天爽天天爽天天爽天天爽| 色狠狠色噜噜AV天堂五区| 婷婷涩涩网| 婷婷在线播放| 婷婷婷婷婷开心无码播放| 五月婷婷激情在线| 丁香五月天天高清在线| AV动漫不卡无码免费| 亚洲高清在线| 色婷婷久久久| 久久激情五月| 97碰碰视频在线观看| 99啪啪视频| 五月激情综合网| 婷婷大香蕉| 色哟呦av| 欧美婷婷精品激情| 五月婷六月综合在线观看| 青青草青青草五月天| 五月网网站| 91色综合| 亚洲综合一区二区| 国产精品18久久久| 天天精品视频免费观看| 人人摸人人干人人做| 人人操97| 香蕉中文在线| .精品久久久麻豆国产精品| 婷婷五月天电影在线| 色色五月婷| 亚洲成人无码免费| 五月婷婷电影院| 91精品综合久久久久久五月丁香| 五月丁香啪啪拍| 色婷婷情片| 香蕉AV福利精品导航| 五月天五月天成人网亭亭成人色网站| 色五月丁香六月资源站| 日日操夜夜爽白洁| 99在线视频播放| 中文字幕在线免费看线人| www.99日本| 天天色天天色天天色天天色天天色| 色婷六月| 九九久久精品國產| 丁香婷婷性久久| 五月天操逼激情| 欧美黑人巨大性生话| 99色婷婷| 久久综合干| 五月婷婷在线视频观看| 狠狠色综合精品视频在线| 开心激情色婷婷五月天| 亚洲乱码在线观看| 九色自拍| 99r这里只有精品哦| wWwCom夜操wwW| 九九九九无码| 秋霞网在线免费基地五月婷婷丁香| 色五月激情五月| 久久久久亚洲AV成人无码电影| 五月丁香婷婷成人综合网| 天天AV导航网| 亚洲五月婷天天操| 五月综合婷婷开心网| 婷婷五月天美女| 亚洲无码播放| 亚洲无码yw| 伊人影院久久网| 五月丁香啪啪综合| 天天狠天天狠| 五月婷婷福利| 中文在线成人| 久久97| 婷婷五月成人| 九九热在线视频| 大伊香蕉玖玖爱| 综合激情网激情五月。| 66色在线日韩| 99久久极情精品一区| 99ri精品| 亲子乱AV-区二区三区| 无码激情AAAAA片-区区| 亚州精品成人片| 精品九九在线观看视频| 婷婷精品| 久激情网| 婷婷激情综合| 五月丁香亭亭A片| 五月天婷亚洲综合在线嫩草网| 66精品国产成人| 五月丁香久久综合| 玖玖资源网站最新站| 久9免费视频| 国内婷婷丁香社区在线播放| site:publishdd.com| 天天日,天天插| 九九综合| www免费在线视频| 成人av免费观看| 日韩美一级毛卡片| 99热 免费| 欧美丁香六月激情视频| 综合图片色色| 九九成人视频| 91久久九九| 99久久综合网| 丁香五月 六月婷婷首页| 啪啪操超碰| 五月天激情国产综合婷婷| 亚洲宗合激情| 99视频久久| 天天xxxxxx天天日| 激情五月小说婷婷| www久久99| 亚洲狠狠爱婷婷| 99综合网| 91偷拍视频| 99九九精品视频推荐| 丁香五月大香蕉| 婷婷五月色情天| 91九色精品熟女内射| 91久久久久久久| 天天插天天插天天插天天插| www.色9| 99色 色| 精品久久人妻| 五月天开心色情网| 99视频在线| 九九亚洲| 精品无码av丁香五月激情| 激情五月天色色网| 国产精品人妻欲求不满| 日本久久性| 99精品网址| 日日操,夜夜爽| 少妇性按摩无码中文A片| 丁香色影院| 26uuu美女三级视频| 久色资源| 最新激情五月天| 99re在线观看| 六月婷婷之青青草| 天天综合精品| 一起草无码视频| 五月婷婷深深爱| 激情婷婷护士激情| 26uuu精品一区二区| 亚洲一二三网| 丁香婷婷五月基地| 爱久久小说下载网| 婷婷丁香激情五月天色色| 色婷婷国产精品综合在线观看| 欧美人人女女精品综合五月天| 99视频精品在线| 人人性久久| 9久视频| 97资源欧美日韩大香蕉超碰一区| 99色网站| 日日干天天射| 色婷婷丁香花五月天| 深爱激情九九五月天| 五月婷婷黄网站大全| 99热这里只有精品22| www.第四色99| 天天日 天天草| 射琪琪| 极品另类| 亚洲激情网| 91av传媒高清在线视频网| 成人免费va| 丁香五月婷婷AV| 91久久婷婷| 激情美女五月天激情在线| 99燥99日| 欧美婷婷综合| 婷婷色在线| 色色丁香激情五月| 色综合久| 亚洲成人电影在线免费观看| 成人在线综合| 五月婷婷播| 激情五月天。| 日本啪啪天堂| 久久五月激情网| 色九亚洲| 91免费啪视频| 99九九视频| 天天上天天爽| 碰人人操| 色婷婷亚洲婷婷| 综合婷婷五月丁香在线观看| 99这里只有免费的小视频在线观看| 97性高潮久久久| 六月丁香网| 天天摸天天日天天舔| 香蕉久久六月| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 婷婷不卡基地| 婷婷金品综合视频| 亚洲在线操| 久香草视频在线观看| 久青操| 成人精品视频99在线观看免费| 秋霞电影理论| 婷婷五月天久久久| 国内一级精品| 九九这里有精品| 天天综合网网欲色| 五月青青草综合| www.ywav| 天天插天天射| 久99久在线观看| 丁香五月在线视频| 无码人妻激情| www激情网站| 色婷婷性爱网| 激情久久五月天| 婷婷噜噜| 日韩精品无码99| 激情婷婷护士激情| 激情深爱五月天| 婷婷.com| 情情五月天色| 国产片色| 五月婷婷偷拍| 超碰A V在线| 中文字幕精品无码一区二区| 久久丁香五月天| 婷婷五月激情天| 国产性爱亚洲是图| 久热这里| 婷婷五月天av| 久久久无码精品成人A片小说| 婷婷五月天免费| 五月丁香婷中文| 婷婷丁香五月高清| 七七色色综合| 清色五月天| 乱女乱妇熟女熟妇综合网站| 99精品无码视频| 激情小说五月天中文字幕| 免费精品66| 色五月天天在线观看资源站| 嫩草综合网| 这里只有精品视频视频在线观看| 99在线资源| 欧美噜噜久久久XXX| 亚洲综合在线伊人婷| 婷婷操逼| 丁香五月天婷婷久久| 色噜噜,噜噜色| 色XX综合网| 婷婷五月色色| 丁香五月天啪啪| 另类图片五月天| AV中文在线| 婷婷91视频| 雪千夏麻豆| 97碰碰视频| 五月天婷婷黄色视频| 这里只有精9| 97碰碰人人视频| 五月婷婷中文字幕| 五月丁香啪啪激情| 天天爽天天日| 99黄色性生活| 无码日本精品XXXXXXXXX| 97丁香视频| 婷婷色五月开心五月| 97久久视频| 美女激情婷婷| 久久人妻乱| 婷婷五月花| 丁香五月综合激情性爱| 日韩99色| 婷婷色五天| 久热只有精品| 九久热| 久久激情综合| www.99久| 久久久久婷婷| seuuu婷婷| 丁香婷婷五月六月久久| 99热亚洲精品66| 九九99在线免费在线观看视频| AV成人在线网站| 99热资源在线| 俺去也在线www色官网| 四虎国产精品永久在线国在线| 99日逼视频| 高清无码中文字幕aVDV| 激情丁香社区| 婷婷综合九色伊人| www.日韩艹| 色九月婷婷综合| 婷婷丁香六月天激情四射网| 97色婷婷在线观看| 五月天婷婷色播综合在线| 手机旧版看人妻1025| 97色精品视频| 色色五月丁香婷婷| 99愛国产| 色婷婷亚洲综合av| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪| 五月天桃色深爱网| 色综合久久综合中文综合网| 五月婷导航| 色级停停| 99热99热99热99热| 丁香五月激情图片婷婷| 开心激情站婷婷五月天| 日本狠狠干| 色色网站免费在线视频| 亚洲亚洲人成综合网络| 91九九| 亚洲精品久久久久久久久久飞鱼 | 丁香六月天婷婷色| 久久婷婷五月草视频在线播放| 99精品无码| 天天噪夜夜爽| 9热网站| 久久99热这里只有精品23| 中文av网站| 怡红院99| 亚洲亚洲人成综合网络| 五月丁香少妇A| 久久九九综合| 欧美天天五月丁香免费观看| 天天综合精品| 天天干肏夜夜| 97超碰欧美中文字幕| 久热这里只有| 色欲色天天香综合| 国产真人做爰视频免费| 骚货艹网站视频| 亚洲成人日韩无码精品| 欧美爆乳一区二区三区| 婷婷激情在线| 欧美 日韩 成人 在线| 久99久在线观看| 超碰99资源站| 九九这里只有精品在线视频| 香蕉网婷婷| 这里只有久久精99| 香蕉久久国产AV一区二区| 丁香六月婷婷色播| 免费99情趣网视频| 黄页免费一级视频懂色| 亚洲五月花| 99在线免费视| 天天艹| 激情综合五月| www.99.色| 激情五月丁香婷婷| 影音先锋四区| 国产古装妇女野外A片| 99综合激情久久精品久久| 91碰操| 六月婷婷综合激情| 丁香五月开心婷婷| av国产精品偷| 久久AAAA片一区二区| 亚洲欧美999| 婷婷五月天激情偷拍| 97ai婷婷| 操人91| 色色色色色色色色色999| 大香蕉综合| 久久婷婷五月天大香蕉| 日91高清无玛| 色国产五月| 97色婷婷成人综合在线观看| 久久亭亭电影| 9精品久久999| 色九月婷婷综合| 久草热视频在线观看| 婷婷五月色花丁香社区| 婷婷九月激情| 玖玖热99| 五月婷婷色在线| 激情深爱五月天| 伊人网大香| 丁香五月天BBw| 99ri在线| 网色99| 97人妻人人| 丁香五月天社区| 深爱五月天| 99久在线精品99re8| 国产va在线视频| 九九99免费理论| 五月丁香色色| 超碰在线观看9| 超碰人人在线观看| 成人国产欧美大片一区| 婷婷丁香社区| 五月婷视频| 久久久久亚洲AV无码网影音先锋| 996日日爱| 五月激情综合五月| 国产成人VA| 超碰99在线| 久久丝丝热| 久久性刺激| 激情五月天色婷婷综合| 9久操| 久热A片| 久久无码成人| 欧美怡红院黄站| 色色色丁香| 婷婷字幕在线| 99操网站| 日韩无码性爱| 亚洲电影在线观看| 日本精品人妻无码77777| 五月丁香六月综合激情| 亚州美女| 亚洲黄网AV| 淫五月停停| 婷婷无五月无码视频| 91干婷婷| 婷婷激情综合色五月久久91| 人妻中文字幕精品| 91操网| 色天天久婷婷| 综合久久8| www.色色色com| 这里只有精品96| 91色五月在线观看| 9999热精品| 午夜爱插插| 久久曰曰| 色天天狠狠干| 天堂综合久久 | 婷婷成人网五月天| 天天天天天天噜| 色婷婷久久| 色五月 五月婷婷| 涩涩激情五月婷婷| 久99| 久久999久久999久久999久久| 亚洲精品大片| 大香蕉伊人久久| 99国产精品久久久久久久久久久 | 五月天色婷婷图片| 日日爽日日| 第九色区av天堂| 五月丁香综合中文| 激情综合区| 五月丁香六月婷婷亚洲视频| 色婷婷电影网| 精品久9| 东京热免费视频| 激情综合色婷婷啪啪六月天| 丁香蜜臀黄色婷婷五月天| 殴美激情综合网| 国产精品香蕉| 国产精品久久久久久亚洲毛片| www.久9| 五月天无码视屏播放| 久久精品视频在这里有| 色婷久久| 久久久久久99精品无码| 丁香六月毛片| 国产99久久久| 99久精品视频| 婷婷五月天六月| 大香网伊人久久综合| 97操碰人人| 爱草视频在线| www.超碰| 97色色婷婷| 免费亚洲婷婷五月| 五月丁香婷婷欧美色图视频五月丁香777电影| √天堂资源在线人妻熟女| 五月天婷婷人妻| 综合网色| 噜综合| 激情综合五月| 98色丁香五月婷婷综合网| 色色99色色| 日韩1区2区| 色天堂在线| 五月色婷婷综合| 96精品国产综合久久久久久| 天天做综合网色综合| 色五月激情综合| 99人人干人人操| 婷婷五月色丁香在线看| 国产小精品| 五月婷婷在线视频免费观看| 9久热在线视频精品| 色五月偷偷| 天天肏高清在线| 99在线综合视频| 这里只有精品久久| 色噜噜狠狠色综合成人99| www.色五月.com| 色日本综合| 九九综合色综合| 婷婷久久18| 五月玖玖| 99综合| 综合亚洲五月天| 色色色欧美| 五月天天丁香婷婷在线中| 99视频只有精品| 5月丁香综合网| 操91| 色噜噜狠狠狠综合曰曰曰| 狠狠色综合图片| 色五月激情| 人人操插| 六月激情综合| 亚洲综合五月天综合| 亚洲天堂色| 色丁香婷婷| 色在线免费观看| 天天插天天干| 国产亚洲99| 丁香综合日产精品久久| 欧洲亚洲精品| 丁香五月中文字幕| 大香蕉 婷婷| 婷婷五月丁香在线视频| 丁香婷色| 97综合视频在线| 亚洲人妻Av| 久久久久久欧美精品se一二三四| 亚洲亚洲人成综合网络| 久色视频| 美日韩成人| 亚洲亚洲人成综合网络| 激情亭亭五月| 亚洲综合色丁香五月天| 2013AV天堂| 久久综合九九| 可以直接看的av| 婷婷六月丁香久| 激情国产五月| 色五月成人| 丁香五月婷久久| 九月色婷婷| 大战熟女丰满人妻AV| 久久久这里有精品| 五月天天天开心激情网| 91干在线| AV成人在线网站| 五月丁香啪| 天天操天天曰| 无码网| 五月丁香六月婷婷的女人| 精品色色| 这里只有精品在线看| 狠狠操综合| 99久久久精品| 国产激情久久| 色噜噜狠狠色综无码久久合欧美| 中文AV网站| 五月婷六月丁香| 色玖玖综合网| 九热视频在线伦| 久久色情| 天堂草在线观看| 婷婷激情蜜桃玖玖丁香| 久久五月天激情美女| 人人操91色| 99噜噜噜在线播放| 丁香六月激情综合| 五月丁香网站| 九九久久99| 99视频在线观看网址| 超碰1999| 久久久久久五月天| 色婷婷精品小视频| 91精产一区三区免费观看| 无语停婷丁香网| 五月天婷婷丁香成人网| 五月天伊人| 97人人干人人操| 五月婷婷六月丁香综合| 六月婷婷国产| 91九色网| 色播五月丁香| 亚洲网视屏| 日本三级日本三级三级人妇四虎| 天天色中文字幕女优AV| 双性美人被调教到喷水A片| 色人久久| 成人做爰高潮A片免费视频| 成人精品在线| 五月天精品视频| 天天综合精品| 成人中文网| 五月丁香色色色| 亚洲综合色激情色五月| 《久久综合九色综合97婷婷| 亚欧州精品视频| 99热最新精品| 高清无码.com| 激情五月天免费视频| 色色网站免费观看| 2025年最新亚洲在线欧美| 婷婷在线五月天观看| 五月丁香婷婷无码A∨| 日屌日日操日日色| 婷婷久久久| 丁香六月婷婷综合| 90色免费视频| 亚洲婷婷婷| 91色五月| 伊人在线婷婷草| 日夜夜久久| 婷婷的色色五月天| 激情婷婷五月天| 色www99| 黑人无码一区| 激情久久久| 五月色丁香成人| 激情五月天婷婷在线网址发给我| 五月婷六月| 五月丁香婷婷色| 熟女国产在线一区二区三区四区| 久热无码| 无人精品在线视频| 人人爱操| 99久久国产综合精品五月天喷水\| 亚洲永久免费| 婷婷五月天高清无码| 另类视频综合| 日韩久久成人| 丁香色综合| 婷婷成人五月天成人文学小说| 色综合天堂| 亚洲乱码日产精品BD| 五月丁香激情怕怕| 九九热精品99| www.99热在线| 610018岁成人视频| 超碰色人妾| 热久久66| 日本狠狠干| 成人精品人妻| 色五月综合在线| 荫道BBWBBB高潮潮喷| 久久加勤综合| 国产精品在线视频| 五月婷导航| 激情综合五月婷婷| 任你日热视频| 激情五月婷在线精品| 综合色情网| 亚洲AV电影美洲AV电影| 亚洲精品视频在线| 九九色影视| 国产老熟妇亲子乱对白| 激情五月色播五月| 女人天堂久久| 国产精品国产| 五月丁香六月婷婷视频| 一本色综合色| www.色婷婷。com| 久热黄色| 国产激情在线| 99综合视频| 五月天操逼激情| 五月天婷婷一起草| 天天色播| 噜噜噜噜婷婷五月天| 亚洲区视频| 热99免费在线| 91色吧网| 91九九| 亚洲综合99| 欧美婷婷日本| 色色色欧美| 亚洲午夜AV| 五月天激情久久| 久久综合无| 99在线视频播放| 日韩综合久| 色婷婷操逼| 操操碰| 99啪啪| 丁香色情五月综合激情| 五月天激情四射| 草操AV在线| 五月J香蕉婷婷| 五月天婷婷丁香六月| 91在线视频观看午夜福利| 天天综合网网欲色| 97在线干| 丁香五月天视频| 久久刺激网| 99热免费| 狠狠草综合网| 久久香蕉丁香| 久热9| 丁香六月婷婷综情欧美| 婷婷欠久少妇| 九九亚洲视频| 国产古装妇女野外A片| 夜夜操激情| 激情久久综合| 嫩草极品| 午夜激情婷婷| 婷婷婷五月天最新综合你懂的| 99热国产在线| 色玖玖综合| 99热99ai| 日本欧美成人片AAAA| 五月综合婷婷网| 97碰操| 婷婷爱五月| 日韩在线观看网址| 亚洲亚洲人成综合网络| 激情综合网五月丁香| PORNY九色9l自拍视频成人| 亚洲av成人在线| 精品人妻在线| 五月婷激情影院| 婷香五月激情视频| 精品一二三区久久AAA片| 伊人在线视频| 99久久综合狠狠综合久久| 99热大| 色五月激情图片| 天天插天天射天天干| 色婷婷综合网站| 97操碰人免费| 91精产品自偷自偷综合| 久久亚洲婷婷| 五月丁香啪啪啪啪| 五月婷婷中文| 日韩精品一区二区亚洲AV观看| 97色色综合| 日本色色影片| wwww.色婷婷| 色综合久久888| 婷婷美女精品视频| 色在线视频网2025| 日韩婷婷| 天天揷综合网| 91美女啪啪| 婷婷五月天六点丁香五月| 都市激情五月婷婷综合| 深爱激情丁香五月| 九九色逼| www.婷婷com| 大香蕉狼人久久| 五月亭亭激情综合| 六月综合婷婷开心伊人| 青青草成人网| 久色大香蕉| 思思热这里只有精品视频666| 五月婷婷影视| 国产精品国产| 丁香婷婷综合激情五月色| 9色在线视频精品观看| 色五月婷婷操逼| 97婷婷丁香五月天激情图片| 天天爽天天| 久久精典| 久草五月丁香婷婷综合| 狠狠色婷婷7777久| 五月丁六月香av| 六月激情综合| 专区无日本视频高清8| www.第四色99| 91超级碰碰碰| 99视频网| 狠狠色成人影片| 99热九九在线| 天天色天天爱天天舔| 激情婷婷五月社区| 婷婷导航| 99久久久久久www| 最新日本A片| 天天色粽合合合合合合合| 亚洲精品久久久久久久久久吃药| 在线超碰免费| 色狠狠色综合久久久绯色AⅤ影视 大香蕉五月天婷婷丁香91 | 久久五月婷| 这里只有精品在线播放| 久草狼人| 被强行糟蹋的女人A片| 五月丁香网站| 婷婷丁香五月天亚洲| 丁香五月性| 99在线视频网址在线观看| 99热人人| 99热精品中文字幕| 99网| 无码yw| 婷婷五月丁香基| a在线观看| 五月天大香蕉AV| 色欲日日躁| 另类天堂| 久久婷婷内射| 色婷五月天综合网| 国产亚洲精品久久久久久牛牛| 碰97久久| 日韩九九| 婷婷丁香日韩五月| 99热乎| 影音先锋四区| 男人大jjc女人免费视频| 久久这里这里有精品免费视频| 久久性爱视频| 青青久在线视频免费观看| 91偷拍视频| 五月婷婷视频| 久久激情中文| 影音先锋色色色资源色资源色| 久久99激情| 婷五月天| 天天天日天天天干| 伊人色综合网| 婷婷五月中文在线| 成人av在线电影| 丁香五月桃花在线激情综合| 婷婷激情五月综合在线视频| 欧洲色| 激情视频婷婷五月花| 色婷婷a v| 精品九九网| 久久婷婷五月综合啪| 中文字幕日产A片在线看| 97干视频在线| 五月花激情| 伊人五月婷| 五月丁香综合激情在线观看| 婷婷六月综合激情| 色婷婷综合久久久久| 九九这里只有精品| 色色色天堂网| 狠狠五月激情丁香六月| 丁香婷婷九月在线| 26uu| 97人人射| 中海油常州环保涂料有限公司| 超碰女人天堂| 色婷婷另类| 看国产探花操逼三级片| 一级AV片| 五月丁香六月激情综合在线| 白人荫道BBWBBB大荫道| 91艹人| 思思热在线| A一级操| 韩国真做片在线观看| 99久久黄色顶级视频| 五月丁香激情综合| 日韩抽插操逼| 丁香五月婷婷五月| AV激情五月| 色啪网| 丁香婷婷五月天亚洲| 久热91| 五月天激情网图片 - 百度| 色播五月| 亚洲美女婷婷五月天| 五月天色图| 久久丁香五月婷婷激情综合网| 九九热精品| 一本久道综合色婷婷五月| 黄网在线免费观看| 综合五月婷婷| 欧美顶级少妇做爰HD| 人妻熟妇国产精品| 亚洲精品99| 色色色色色色五月婷婷| 丁香五月天黄色片| 丁香色情五月综合网站| 久激情网| 五月婷婷影视| 99热精品在线观看| 婷婷五月丁香基地在线视频官网| 人人操AV| 日本在线噜噜| 久久99综合| 五月婷婷久久开心网| www.久久色.com| 五月婷婷激情综合网| 激情久久五月网| 99久久99视频| 五月婷色丁香| 婷婷五月天激情在线| 久久永久网址| 99在线视频操999| 五月丁香激情综合啪| 涩五月婷婷| 激情五月丁香婷婷夜夜操| 天天影院色| 婷婷六月丁香色| 日本三级第一页| 99热手机在线精品| 五月天伊人综合| 超碰免费人人| 偷拍视频五月天| 高清 码 免费看片短视频| www.色婷婷| 伊人9在线| 99久re热视频精品98| 亚洲成人色五月婷婷综合| 99热有精品在线观看| 99爱视频在线| 色婷婷在线播放| 91av传媒高清在线视频网| 五月婷婷co.m| 极品五月天| 99激情网| 五月色丁香婷婷中文字幕| 丁香婷婷六月| 久久婷婷五月| 久久五月天精品视频| 欧美三级A做爰在线观看| 日日狠狠久久偷偷四色综合免费 | 六月婷婷最新网址| 婷婷四色五月| 天天成人综合| 九九精品系列| 丁香五月影视| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 岛国av网站| 婷婷丁香激情| 久久婷婷人人| 亚洲成av人影院| 激情色视频| 久久精品99| 婷婷丁香九色| 高清无码入口| 激情五月天色网站| 亚洲12p| 99re思思久久| se99热久久一本| 九九无码| www.狠狠艹| 九洲一级A片| 欧美色婷婷| 丁香五月六月综合欧美| 成人av在线网站| 99热网精品| 久久总和99| 插插插丁香五月婷婷| www.久久99精品| 五月丁香婷婷综合在线| 九九九九九九九九九九九九九九九九九九九在线视频 | 五月丁香六月婷婷综合网站| 久久精品99久久| 激情五月丁香五月综合| 国产成人综合在线| 久色成人| 激情爱爱网站超大免费| 五月J香蕉婷婷| 婷婷五月天激情小说| 99在线观看免费精品视频| 久久天堂婷婷五月| 婷婷五月天色| www.色婷婷.com| 丁香六月婷婷色XXXX| 色九月| 96自拍视频九色在线观看| 97人人干人人操| 骚货艹网站视频| 国产色色网址网站| 9久久久| 国产精女同一区二区三区久| 久久综合丁香激情五月| 久久久久综合激动五月天| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 亚洲操逼片| 婷婷五月天免费视频| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 99久热精品在线| 精品一二三区久久AAA片| 超碰色综合| 熟女激情五月天 | 少妇伦子伦精品无吗| 中文AV在线播放| 色婷婷狠狠干芒果TV| 99'无码| 91久久精品无码一区二区三区| www.91热久久| 大香蕉综合| 日日操日日撸| 337午夜福利| 秋霞午夜理论| 超碰在线日夜| 五月婷婷激情综合| 日韩成人网站精品久久大全| 五月丁香久| 伊人玖玖网| 五月天另类小说久久小说网| 日韩无码专区| 99热97| 丁香五月天激情网| 亚洲一色色色色色色色色| 97干在线看| 国产偷人爽久久久久久老妇APP | 欧洲亚洲免费视频9| 亚洲av无码影院| 五月丁香在线观看国产| 亚洲精品又粗又大又爽A片 | 五月成人综合| 严洲天天插| 成人噜噜网| 性一交一乱一交A片久久四色| 婷婷色片| 欧美超碰人人| 婷婷五月天av小说| 五月天操逼激情| 99国产精品久久久久久久久久久| 欧美一级色| 99色性爰网络| 99re在线精品视频| 99爱精品| 开心五月激情网| 五月婷婷激情久久| 人人人va亚洲视频在线| 中文aV网| 五月丁香六月婷婷玖玖| 怡红院院在线导航网| 婷婷五月天视| 丁香五月激情六月欧亚激情综合导航| 狠狠干狠狠色| caop在线视频| 综合久| 99色中文| 超碰在线视屏| 99热这里都是精品| 激情视频网址| 色色九九五月天 | 337午夜福利|