日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

Linux動(dòng)靜態(tài)庫制作與使用全解析:從編譯鏈接到動(dòng)態(tài)加載原理

Linux動(dòng)靜態(tài)庫制作與使用全解析:從編譯鏈接到動(dòng)態(tài)加載原理 做 Linux 系統(tǒng)開發(fā)這些年我發(fā)現(xiàn)一個(gè)挺有意思的現(xiàn)象很多人寫了三五年業(yè)務(wù)代碼編譯鏈接這塊一直是“黑盒”——gcc main.c -o main一把梭能跑就行。直到某天遇到undefined reference to、cannot open shared object file、或者程序體積莫名其妙膨脹到幾十兆才開始回頭補(bǔ)這一課。動(dòng)靜態(tài)庫的制作與使用恰恰是打通“源碼到可執(zhí)行程序”這條鏈路上最關(guān)鍵的一環(huán)也是理解動(dòng)態(tài)鏈接原理的入口。這篇內(nèi)容我打算把靜態(tài)庫、動(dòng)態(tài)庫從制作到使用的完整流程拆開講透順帶把動(dòng)態(tài)庫加載的底層機(jī)制、符號(hào)解析、版本管理這些容易被跳過的東西補(bǔ)上。適合已經(jīng)會(huì)寫 C 代碼、能看懂基本 Makefile、但對(duì)鏈接過程一知半解的同學(xué)也適合想搞清楚“為什么我的程序換個(gè)機(jī)器就跑不起來”的運(yùn)維和嵌入式方向的朋友。全文會(huì)給出可直接復(fù)現(xiàn)的命令和代碼參數(shù)選擇我會(huì)解釋清楚背后的理由踩過的坑也會(huì)一并列出來。1. 先搞清楚靜態(tài)庫和動(dòng)態(tài)庫到底差在哪在動(dòng)手之前得先把這兩個(gè)概念的本質(zhì)區(qū)別說清楚不然后面很多操作你會(huì)覺得“為什么要這么麻煩”。我用一個(gè)生活化的類比靜態(tài)庫像是把工具箱里的每件工具都焊死在你自己的車上車開到哪工具跟到哪別人借不走也改不了動(dòng)態(tài)庫像是公共倉庫你的車只留一個(gè)取貨憑證真正要用的時(shí)候去倉庫拿倉庫更新了工具你的車下次取貨自動(dòng)用上新的。1.1 從鏈接時(shí)機(jī)看本質(zhì)差異靜態(tài)庫.aArchive在鏈接階段就被完整地拷貝進(jìn)最終的可執(zhí)行文件。鏈接器ld會(huì)從歸檔文件里挑出被引用到的目標(biāo)文件.o把它們合并進(jìn)輸出。這意味著程序運(yùn)行時(shí)不依賴外部庫文件但也意味著每個(gè)使用該庫的程序都有一份獨(dú)立副本磁盤和內(nèi)存都有冗余。動(dòng)態(tài)庫.soShared Object在鏈接階段只做符號(hào)引用登記真正的代碼段在程序啟動(dòng)或首次調(diào)用時(shí)才由動(dòng)態(tài)鏈接器加載到內(nèi)存。多個(gè)進(jìn)程可以共享同一份物理內(nèi)存中的庫代碼代碼段只讀天然可共享這也是“共享庫”這個(gè)名字的由來。這里有個(gè)細(xì)節(jié)很多人忽略靜態(tài)庫的鏈接單位是目標(biāo)文件不是函數(shù)。你只調(diào)用了一個(gè)函數(shù)鏈接器會(huì)把包含這個(gè)函數(shù)的整個(gè).o都拉進(jìn)來。所以靜態(tài)庫的“按需鏈接”粒度其實(shí)比較粗這也是為什么有時(shí)候只用一個(gè)函數(shù)程序體積卻漲了不少。1.2 一張表看清選型依據(jù)對(duì)比維度靜態(tài)庫.a動(dòng)態(tài)庫.so鏈接時(shí)機(jī)編譯鏈接期完整拷貝運(yùn)行期加載可執(zhí)行文件體積大小運(yùn)行時(shí)依賴無需要庫文件存在內(nèi)存占用每進(jìn)程獨(dú)立代碼段可共享庫更新需重新鏈接程序替換.so即可生效部署便利性單文件即可分發(fā)需保證庫路徑正確啟動(dòng)速度略快無加載開銷略慢需符號(hào)重定位適用場(chǎng)景嵌入式、單文件分發(fā)、對(duì)啟動(dòng)敏感通用軟件、多程序共用、需熱更新選型上沒有絕對(duì)優(yōu)劣。我個(gè)人的經(jīng)驗(yàn)是面向終端用戶分發(fā)的閉源工具、或者跑在資源受限設(shè)備上的程序靜態(tài)鏈接省心而系統(tǒng)級(jí)服務(wù)、多個(gè)程序共用的基礎(chǔ)組件動(dòng)態(tài)庫更合適。混合使用也很常見——核心邏輯靜態(tài)鏈接保證穩(wěn)定外圍插件用動(dòng)態(tài)庫實(shí)現(xiàn)擴(kuò)展。1.3 命名規(guī)范不是隨便定的Linux 下庫文件命名有約定俗成的規(guī)則理解它能幫你少走彎路。靜態(tài)庫固定是lib 庫名 .a動(dòng)態(tài)庫是lib 庫名 .so 版本號(hào)。比如庫名叫mymath那文件就是libmymath.a和libmymath.so。鏈接時(shí)用-l參數(shù)只需寫庫名去掉lib前綴和擴(kuò)展名比如-lmymath鏈接器會(huì)自動(dòng)去找libmymath.a或libmymath.so。動(dòng)態(tài)庫的版本號(hào)還有講究通常有三段libmymath.so.1.2.3分別對(duì)應(yīng)主版本號(hào)不兼容變更、次版本號(hào)新增接口、修訂號(hào)bug 修復(fù)。實(shí)際部署時(shí)會(huì)有l(wèi)ibmymath.so.1這樣的軟鏈接指向具體版本程序鏈接時(shí)記錄的是SONAME通常是libmymath.so.1這樣小版本升級(jí)不影響已有程序。這套機(jī)制后面講動(dòng)態(tài)庫原理時(shí)還會(huì)展開。2. 靜態(tài)庫制作從目標(biāo)文件到歸檔靜態(tài)庫的制作流程其實(shí)很樸素先把源文件編譯成目標(biāo)文件再用歸檔工具打包。但每一步的參數(shù)選擇都有講究我按實(shí)際操作順序走一遍。2.1 編譯目標(biāo)文件的關(guān)鍵參數(shù)假設(shè)我們有一個(gè)簡(jiǎn)單的數(shù)學(xué)工具庫包含兩個(gè)源文件add.c和sub.c頭文件mymath.h聲明接口。第一步是編譯成.ogcc -c -fPIC add.c -o add.o gcc -c -fPIC sub.c -o sub.o這里-c表示只編譯不鏈接輸出目標(biāo)文件。-fPIC是生成位置無關(guān)代碼靜態(tài)庫其實(shí)不強(qiáng)制要求但加上它有個(gè)好處同一批.o既能打靜態(tài)庫也能打動(dòng)態(tài)庫省得重復(fù)編譯。PIC 的代價(jià)是少量性能開銷主要是通過 GOT 間接尋址對(duì)絕大多數(shù)場(chǎng)景可以忽略。注意如果你的代碼要同時(shí)用于靜態(tài)庫和動(dòng)態(tài)庫務(wù)必統(tǒng)一加-fPIC。我見過有人靜態(tài)庫用非 PIC 編譯后來想復(fù)用這批.o做動(dòng)態(tài)庫結(jié)果鏈接報(bào)relocation R_X86_64_32 against ... can not be used when making a shared object只能全部重編。編譯時(shí)還可以加-O2優(yōu)化、-Wall開警告這些和庫制作不沖突。但有個(gè)坑要提醒不要加-g之外的調(diào)試信息裁剪參數(shù)否則出問題時(shí)沒法定位。生產(chǎn)庫可以strip掉符號(hào)表但那是打包最后一步的事編譯階段保留完整信息更穩(wěn)妥。2.2 用 ar 打包歸檔文件有了.o文件用ar命令打包ar rcs libmymath.a add.o sub.o三個(gè)參數(shù)含義r表示插入或替換成員c表示創(chuàng)建歸檔不存在時(shí)s表示生成索引symbol table。這個(gè)索引很關(guān)鍵鏈接器靠它快速查找符號(hào)在哪個(gè)成員里沒有索引會(huì)退化成線性掃描大庫鏈接會(huì)明顯變慢?,F(xiàn)代ar默認(rèn)可能已經(jīng)生成索引但顯式寫s更保險(xiǎn)。打包完可以用ar t libmymath.a查看成員列表用nm libmymath.a查看符號(hào)表。nm輸出里T表示代碼段定義的全局符號(hào)U表示未定義需要外部提供t是小寫表示局部符號(hào)。檢查符號(hào)表是個(gè)好習(xí)慣能提前發(fā)現(xiàn)“函數(shù)忘了實(shí)現(xiàn)”或者“不小心定義了同名符號(hào)”這類問題。實(shí)操心得如果庫里有多個(gè).o且存在同名符號(hào)ar不會(huì)報(bào)錯(cuò)鏈接時(shí)可能悄悄用錯(cuò)版本。建議打包前用nm -A *.o | grep T 掃一遍確認(rèn)沒有重復(fù)的全局符號(hào)定義。2.3 靜態(tài)庫的目錄組織一個(gè)規(guī)范的庫交付物通常包含三部分頭文件目錄include/、庫文件目錄lib/、可選的文檔。我習(xí)慣這樣組織mymath/ ├── include/ │ └── mymath.h ├── lib/ │ └── libmymath.a └── src/ ├── add.c └── sub.c使用者拿到后編譯時(shí)用-I指定頭文件路徑-L指定庫路徑-l指定庫名gcc main.c -I./mymath/include -L./mymath/lib -lmymath -o main這里有個(gè)順序問題必須強(qiáng)調(diào)-l參數(shù)要放在源文件之后。因?yàn)殒溄悠鲝淖蟮接姨幚磔斎胗龅絤ain.c時(shí)發(fā)現(xiàn)引用了add符號(hào)此時(shí)還沒看到-lmymath符號(hào)未解析等處理到-lmymath時(shí)才會(huì)去庫里找。如果順序反了鏈接器處理庫時(shí)還沒有任何未解析符號(hào)會(huì)直接跳過整個(gè)庫最后報(bào)undefined reference。這個(gè)坑幾乎每個(gè)新手都會(huì)踩一次。3. 動(dòng)態(tài)庫制作PIC、SONAME 與版本管理動(dòng)態(tài)庫的制作比靜態(tài)庫多幾個(gè)環(huán)節(jié)核心是位置無關(guān)代碼、共享鏈接、以及版本號(hào)管理。這幾步做不好后面運(yùn)行時(shí)會(huì)出各種詭異問題。3.1 位置無關(guān)代碼為什么必須加動(dòng)態(tài)庫會(huì)被加載到進(jìn)程地址空間的任意位置具體地址每次運(yùn)行可能不同這是地址空間布局隨機(jī)化的一部分所以庫代碼不能使用絕對(duì)地址尋址。-fPIC讓編譯器生成通過全局偏移表GOT和過程鏈接表PLT間接訪問的代碼這樣無論庫被加載到哪代碼都能正確工作。gcc -c -fPIC add.c -o add.o gcc -c -fPIC sub.c -o sub.o如果忘了加-fPIC直接鏈接動(dòng)態(tài)庫在 x86_64 上通常會(huì)報(bào)relocation R_X86_64_32S against ... can not be used when making a shared object; recompile with -fPIC。這個(gè)錯(cuò)誤信息很明確照著做就行。但有些架構(gòu)比如某些 32 位平臺(tái)可能不報(bào)錯(cuò)卻能鏈接成功運(yùn)行時(shí)才崩潰更難排查。所以養(yǎng)成習(xí)慣做動(dòng)態(tài)庫編譯階段就加-fPIC。3.2 鏈接成共享對(duì)象把.o鏈接成.sogcc -shared -fPIC add.o sub.o -o libmymath.so.1.0.0-shared告訴鏈接器生成共享對(duì)象而非可執(zhí)行文件。這里我直接帶了完整版本號(hào)1.0.0接下來要建立 SONAME 和軟鏈接。3.3 SONAME 與軟鏈接的配合SONAME 是嵌在動(dòng)態(tài)庫內(nèi)部的一個(gè)字段程序鏈接時(shí)會(huì)把 SONAME 記錄到自己的DT_NEEDED條目里運(yùn)行時(shí)動(dòng)態(tài)鏈接器就按這個(gè)名字去找?guī)?。設(shè)置 SONAME 用-Wl,-sonamegcc -shared -fPIC add.o sub.o -Wl,-soname,libmymath.so.1 -o libmymath.so.1.0.0然后建立軟鏈接ln -s libmymath.so.1.0.0 libmymath.so.1 ln -s libmymath.so.1 libmymath.so三個(gè)文件的關(guān)系libmymath.so.1.0.0是真實(shí)文件libmymath.so.1是 SONAME 對(duì)應(yīng)的鏈接運(yùn)行時(shí)找這個(gè)libmymath.so是開發(fā)時(shí)鏈接用的-lmymath找這個(gè)。為什么要這么繞因?yàn)槌绦蜻\(yùn)行時(shí)只認(rèn) SONAME只要libmymath.so.1存在且指向正確的實(shí)現(xiàn)小版本升級(jí)比如換成1.0.1只需改軟鏈接指向已有程序無需重新編譯。這就是動(dòng)態(tài)庫“熱更新”能力的底層支撐。可以用readelf -d libmymath.so.1.0.0 | grep SONAME驗(yàn)證 SONAME 是否設(shè)置成功。如果輸出為空說明沒設(shè)上運(yùn)行時(shí)可能找不到庫。3.4 動(dòng)態(tài)庫的鏈接與運(yùn)行路徑編譯使用動(dòng)態(tài)庫的程序gcc main.c -I./include -L./lib -lmymath -o main鏈接階段沒問題但直接運(yùn)行./main很可能報(bào)error while loading shared libraries: libmymath.so.1: cannot open shared object file。原因是動(dòng)態(tài)鏈接器運(yùn)行時(shí)不知道去哪找這個(gè)庫。解決辦法有幾種把庫裝到系統(tǒng)默認(rèn)路徑如/usr/local/lib然后ldconfig刷新緩存設(shè)置環(huán)境變量LD_LIBRARY_PATH./lib臨時(shí)指定編譯時(shí)加-Wl,-rpath,$ORIGIN/lib把相對(duì)路徑寫進(jìn)程序$ORIGIN表示可執(zhí)行文件所在目錄。我一般推薦rpath方案因?yàn)樗岩蕾囮P(guān)系固化在程序里部署時(shí)不用依賴環(huán)境變量也不會(huì)污染系統(tǒng)庫路徑。$ORIGIN用單引號(hào)包住是為了防止 shell 提前展開。驗(yàn)證可以用readelf -d main | grep -i path看 RUNPATH 是否寫入。注意LD_LIBRARY_PATH雖然方便但在生產(chǎn)環(huán)境慎用。它會(huì)改變整個(gè)進(jìn)程的庫搜索順序可能讓程序加載到非預(yù)期的庫版本引發(fā)難以復(fù)現(xiàn)的問題。調(diào)試時(shí)臨時(shí)用可以正式部署優(yōu)先 rpath 或標(biāo)準(zhǔn)路徑安裝。4. 動(dòng)態(tài)庫加載原理從 execve 到符號(hào)重定位這部分是很多人覺得“玄”的地方其實(shí)拆開看邏輯很清晰。我按程序啟動(dòng)的時(shí)間線走一遍把關(guān)鍵環(huán)節(jié)和涉及的數(shù)據(jù)結(jié)構(gòu)點(diǎn)出來。4.1 程序啟動(dòng)時(shí)的加載流程當(dāng)你執(zhí)行./main內(nèi)核的execve系統(tǒng)調(diào)用會(huì)讀取 ELF 文件頭發(fā)現(xiàn)是動(dòng)態(tài)鏈接的可執(zhí)行文件有PT_INTERP段于是先加載動(dòng)態(tài)鏈接器通常是/lib64/ld-linux-x86-64.so.2把控制權(quán)交給它。動(dòng)態(tài)鏈接器接著做幾件事加載可執(zhí)行文件本身、遍歷DT_NEEDED條目加載所有依賴的.so、執(zhí)行重定位、調(diào)用各庫的初始化函數(shù).init/.init_array最后跳轉(zhuǎn)到程序入口。DT_NEEDED里記錄的就是各依賴庫的 SONAME??梢杂胷eadelf -d main查看輸出里NEEDED行就是。動(dòng)態(tài)鏈接器按一定順序搜索這些庫先看DT_RPATH如果沒被DT_RUNPATH覆蓋再看LD_LIBRARY_PATH再看DT_RUNPATH最后是/etc/ld.so.cache和默認(rèn)路徑。這個(gè)搜索順序理解清楚排查“加載了錯(cuò)誤版本庫”的問題就有方向了。4.2 符號(hào)重定位與 GOT/PLT 機(jī)制動(dòng)態(tài)庫的代碼在編譯時(shí)不知道自己和依賴庫會(huì)被加載到哪個(gè)地址所以對(duì)全局符號(hào)的訪問不能寫死地址。解決方案是 GOTGlobal Offset Table和 PLTProcedure Linkage Table。數(shù)據(jù)符號(hào)通過 GOT 訪問代碼里寫的是“從 GOT 第 N 項(xiàng)取地址”GOT 表項(xiàng)在加載時(shí)由動(dòng)態(tài)鏈接器填上真實(shí)地址。函數(shù)調(diào)用通過 PLT第一次調(diào)用某函數(shù)時(shí)PLT 跳轉(zhuǎn)到動(dòng)態(tài)鏈接器的解析例程解析出真實(shí)地址后填入 GOT后續(xù)調(diào)用直接走 GOT。這就是所謂的延遲綁定lazy binding好處是啟動(dòng)快——沒調(diào)用到的函數(shù)不用提前解析。延遲綁定可以用LD_BIND_NOW1環(huán)境變量關(guān)閉或者鏈接時(shí)加-Wl,-z,now強(qiáng)制立即綁定。立即綁定的好處是啟動(dòng)時(shí)就能發(fā)現(xiàn)符號(hào)缺失問題而不是運(yùn)行到一半才崩代價(jià)是啟動(dòng)稍慢。安全敏感的場(chǎng)景比如需要完整 RELRO 保護(hù)通常用立即綁定。4.3 符號(hào)可見性控制默認(rèn)情況下動(dòng)態(tài)庫里的所有全局符號(hào)都對(duì)外可見。這帶來兩個(gè)問題一是符號(hào)污染不同庫的同名符號(hào)可能沖突二是性能可見符號(hào)都要經(jīng)過 PLT 間接調(diào)用。解決辦法是用可見性控制// 只導(dǎo)出需要的接口 __attribute__((visibility(default))) int mymath_add(int a, int b); // 內(nèi)部函數(shù)隱藏 __attribute__((visibility(hidden))) static int internal_helper(void);編譯時(shí)加-fvisibilityhidden把所有符號(hào)默認(rèn)設(shè)為隱藏再對(duì)需要導(dǎo)出的接口顯式標(biāo)default。這樣導(dǎo)出的符號(hào)表干凈加載更快也不容易和別的庫撞名??梢杂胣m -D libmymath.so查看動(dòng)態(tài)符號(hào)表確認(rèn)只導(dǎo)出了預(yù)期接口。實(shí)操心得做庫的時(shí)候養(yǎng)成“默認(rèn)隱藏、顯式導(dǎo)出”的習(xí)慣比事后用版本腳本version script收拾爛攤子省事得多。版本腳本雖然強(qiáng)大但維護(hù)成本高小項(xiàng)目沒必要上。5. 完整實(shí)操從零構(gòu)建一個(gè)可復(fù)現(xiàn)的庫項(xiàng)目光說不練假把式這里給一套完整的、可直接復(fù)制運(yùn)行的流程。我用一個(gè)字符串處理庫做例子包含靜態(tài)庫和動(dòng)態(tài)庫兩種產(chǎn)物。5.1 源碼與目錄結(jié)構(gòu)strutil/ ├── include/ │ └── strutil.h ├── src/ │ ├── str_reverse.c │ └── str_count.c └── Makefilestrutil.h#ifndef STRUTIL_H #define STRUTIL_H #ifdef __cplusplus extern C { #endif __attribute__((visibility(default))) void str_reverse(char *s); __attribute__((visibility(default))) int str_count_char(const char *s, char c); #ifdef __cplusplus } #endif #endifstr_reverse.c實(shí)現(xiàn)字符串反轉(zhuǎn)str_count.c實(shí)現(xiàn)字符計(jì)數(shù)都是簡(jiǎn)單邏輯重點(diǎn)在構(gòu)建流程。5.2 Makefile 的寫法與參數(shù)解釋CC gcc CFLAGS -Wall -O2 -fPIC -fvisibilityhidden -Iinclude LDFLAGS_SO -shared -Wl,-soname,libstrutil.so.1 SRCS src/str_reverse.c src/str_count.c OBJS $(SRCS:.c.o) all: libstrutil.a libstrutil.so.1.0.0 %.o: %.c $(CC) $(CFLAGS) -c $ -o $ libstrutil.a: $(OBJS) ar rcs $ $^ libstrutil.so.1.0.0: $(OBJS) $(CC) $(LDFLAGS_SO) $^ -o $ ln -sf libstrutil.so.1.0.0 libstrutil.so.1 ln -sf libstrutil.so.1 libstrutil.so clean: rm -f $(OBJS) libstrutil.a libstrutil.so* .PHONY: all clean幾個(gè)關(guān)鍵點(diǎn)-fPIC和-fvisibilityhidden在CFLAGS里統(tǒng)一加靜態(tài)庫動(dòng)態(tài)庫共用同一批.o-Wl,-soname通過-Wl把參數(shù)透?jìng)鹘o鏈接器軟鏈接用ln -sf保證重復(fù)執(zhí)行不報(bào)錯(cuò)。$^是自動(dòng)變量表示所有依賴文件$表示第一個(gè)依賴。5.3 測(cè)試程序與驗(yàn)證步驟寫個(gè)測(cè)試程序test.c#include stdio.h #include string.h #include strutil.h int main(void) { char buf[] hello; str_reverse(buf); printf(reversed: %s\n, buf); printf(count l: %d\n, str_count_char(hello, l)); return 0; }靜態(tài)鏈接測(cè)試make gcc test.c -Iinclude -L. -lstrutil -static -o test_static ./test_static注意-static會(huì)讓整個(gè)程序靜態(tài)鏈接包括 libc體積會(huì)很大。如果只想靜態(tài)鏈接我們的庫而動(dòng)態(tài)鏈接 libc可以顯式指定./libstrutil.a而不是-lstrutil或者用-Wl,-Bstatic -lstrutil -Wl,-Bdynamic切換。動(dòng)態(tài)鏈接測(cè)試gcc test.c -Iinclude -L. -lstrutil -Wl,-rpath,$ORIGIN -o test_dynamic ./test_dynamic用ldd test_dynamic查看依賴應(yīng)該能看到libstrutil.so.1 ./libstrutil.so.1。用readelf -d test_dynamic | grep -E NEEDED|RUNPATH確認(rèn) SONAME 和 rpath 都正確寫入。5.4 驗(yàn)證庫的獨(dú)立性與符號(hào)表檢查靜態(tài)庫符號(hào)nm libstrutil.a應(yīng)該看到T str_reverse和T str_count_char以及一些U開頭的 libc 依賴比如strlen。檢查動(dòng)態(tài)庫導(dǎo)出符號(hào)nm -D libstrutil.so.1.0.0因?yàn)榧恿?fvisibilityhidden應(yīng)該只看到我們顯式標(biāo)了default的兩個(gè)函數(shù)加上一些鏈接器自動(dòng)生成的符號(hào)如_init、_fini。如果看到一堆內(nèi)部符號(hào)說明可見性控制沒生效檢查頭文件里的 attribute 是否寫對(duì)。6. 常見問題排查與避坑清單這部分是我這些年踩坑攢下來的按問題現(xiàn)象分類方便對(duì)照排查。6.1 鏈接期問題速查表現(xiàn)象可能原因解決方向undefined reference to xxx-l順序在源文件前庫沒包含該符號(hào)C/C 混編缺extern C調(diào)整參數(shù)順序nm查符號(hào)補(bǔ)extern Ccannot find -lxxx-L路徑不對(duì)庫文件名不符合libxxx.a/.so規(guī)范檢查路徑和文件名relocation R_X86_64_32 ... recompile with -fPIC動(dòng)態(tài)庫的.o沒加-fPIC重新編譯加-fPIC靜態(tài)庫鏈接后體積異常大鏈接了不需要的.o誤用了-static全靜態(tài)檢查是否按需鏈接避免全靜態(tài)同名符號(hào)沖突多個(gè)庫定義了同一全局符號(hào)用visibility隱藏重命名6.2 運(yùn)行期問題排查思路cannot open shared object file是最常見的運(yùn)行期錯(cuò)誤。排查順序先用ldd ./main看哪個(gè)庫沒找到顯示not found然后確認(rèn)庫文件是否在預(yù)期路徑再用LD_DEBUGlibs ./main 21 | head -50看動(dòng)態(tài)鏈接器的搜索過程。LD_DEBUG是個(gè)寶藏工具libs看庫搜索symbols看符號(hào)綁定reloc看重定位排查疑難問題非常有用。另一個(gè)常見問題是“加載了錯(cuò)誤版本的庫”?,F(xiàn)象是程序行為異常但沒報(bào)錯(cuò)。用LD_DEBUGlibs能看到實(shí)際加載的路徑或者程序里調(diào)dladdr打印符號(hào)所在庫。根因通常是LD_LIBRARY_PATH里有舊版本或者系統(tǒng)路徑下有同名庫。這也是我前面強(qiáng)調(diào)慎用LD_LIBRARY_PATH的原因。6.3 幾個(gè)容易忽略的細(xì)節(jié)符號(hào)版本控制大型項(xiàng)目里同一個(gè)庫可能有多個(gè)不兼容版本共存用 version script 給符號(hào)打版本標(biāo)簽程序鏈接時(shí)記錄所需版本運(yùn)行時(shí)精確匹配。這個(gè)機(jī)制 GNU libc 用得很多比如GLIBC_2.2.5自己寫庫一般用不上但遇到version XXX not found的報(bào)錯(cuò)時(shí)要知道是這么回事。構(gòu)造函數(shù)與析構(gòu)函數(shù)動(dòng)態(tài)庫可以用__attribute__((constructor))定義加載時(shí)自動(dòng)執(zhí)行的函數(shù)destructor定義卸載時(shí)執(zhí)行的。注意執(zhí)行順序依賴庫的構(gòu)造函數(shù)先于被依賴庫執(zhí)行析構(gòu)順序相反。如果構(gòu)造函數(shù)里依賴了別的庫的初始化結(jié)果順序搞反會(huì)出問題。靜態(tài)庫的循環(huán)依賴兩個(gè)靜態(tài)庫互相引用時(shí)鏈接順序要重復(fù)寫比如-lA -lB -lA或者用-Wl,--start-group -lA -lB -Wl,--end-group讓鏈接器反復(fù)掃描。動(dòng)態(tài)庫沒這個(gè)問題因?yàn)榉?hào)解析是運(yùn)行期做的。最后分享一個(gè)我常用的調(diào)試組合gcc -Wl,--verbose看鏈接器詳細(xì)過程objdump -d反匯編看實(shí)際生成的代碼readelf -a看 ELF 全貌。這三個(gè)工具配合基本沒有定位不了的鏈接問題。庫這東西做一次完整的、帶版本管理的、靜態(tài)動(dòng)態(tài)雙產(chǎn)物的項(xiàng)目比看十篇教程都管用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩操逼HD| 女上位精品在线| 国产精品婬乱一级毛片彝族| 国产白丝网站| 99只有精品| 九九久久99| 夜夜操美女| 人妻无一区二区三区| 欧亚不卡| 九九热男人天堂| 日韩av一级黄片| 女性91网站| 男人的天堂日韩| 九九热男人天堂| 国产又大又硬又长又粗| 欧美性爱免费短视频| 91热| 国产热av| 91黑丝操| 茄子社区国产精品| 91欧美美女日韩国产婷婷| 99精品在线| 国产亚洲禁久一区二区 | 国产精品久久久久久久久久久久久久久久 | 欧美十八禁导航成人| 日日超碰亚洲| 免费观看日本操逼视频| 天天射夜夜操| 婷婷操视频| 成人线上超碰| 无码精品久久| 亚洲国产精品9999在线观看| 人人操人人摸人人看人人插| 欧亚性爱在线视频| 久久人人舔人人爽舔人人av片| 最近2018中文字幕在线高清第一页| 精品视频久久| 久久产精品一区二区三区电影| 极品肉射| 亚洲欧美日韩制服另类| 桃花色综合影院| yaouchengrenav| 亚洲无码太久| 人人色人人操在线| 久久久久精| 96AV久久久| 操少妇很爽av| 中文字幕一区二区三区高清| 99re国产精品视频| 999综合网| 丝袜天堂网| 九月AV| 男人兔费天堂| 激情文学网伊人| 欧美久久伊人| 黄色电影观看久久9| 国内精品嫩模A∨私拍小视频| 可乐操在线| 99蜜月精品久久| 亚洲中亚日激情视频| 蜜臀人妻少妇久久在线观看| 欧美综合加勒比在线| 啊啊啊想要| 日韩欧美成人大香蕉| 欧美日韩*字幕一区| 一本色道久久综合亚洲二区三区| 亚洲少妇免费视频\| 一区二区高清视频| 夜夜骑夜夜操| 久操B网| 99无码视频| 99热99色| 欧美色图亚洲色图成人在在线| 国产 码在线成人网站| 综合久| 天美AV片| 久久宗合亚洲| 欧美色图第一页| 人妻少妇久久中文字幕一区二区 麻豆| 精品国产乱子伦一区二区三区,精品一| 少妇淫妇久久久久久久| 粉嫩av在线一区二区| 精品二999| 综合av影片| 少妇人妻在线| 人妻天天爽天天爽三区| 亚洲无码?第一页| 97人人超| 男人天堂最新手机版在线青青草| 亚洲精品九九九| 视频在线观看免费一区二区三区 | 欧美综合中文| 国内毛片国产欧美拍| 欧美日本国产日韩激情视频| 另类综合另类| 婷婷丁香人妻 | 综合一区中亚洲国产成人综合精品| 激情AV| 射 色综合| 五月天伊人| 操久久久久久| 可乐操亚洲蜜911| 国产一区免费午夜视频| 激情文学亚洲| 中文字幕奈奈美被公侵犯| 色综合色色| 亚洲日韩乱码中文无码蜜桃臀网站| 超碰在线免费一区二区三区| 日本高清_区二区三区| 禁止观看美女黄| 97人人操人人摸人人爱| 人妻嗯啊啊在线播放| 嗯嗯啊啊的视频| 超碰久久综合| 久久久久久69国产一区二区 | 久久男人天堂| 一级成人性爱| 日本性爱网址| 日韩精品碰碰| 97在线免费看视频| 国产精品 久久久精品一牛| 91狠| 啪啪视频免费在线观看| 婷婷综合五月天| 欧美第五页| 婷婷影院入口| 羞答答AV中文字| 国产综合操逼高清| 日本三级精品| 麻豆 欧美 日韩| 青青色在线观看| 99精品丰满人妻无| 丁香五六月啪啪| 欧美综合第一| 中国一区二区亚洲人妻| 99久久免费看精品国产一区| 中文字幕一区二区三区视频播放| 91色综合激情| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 日韩av熟女一区二区三区成人| 熟女精品日韩一区二区三区 | 97干在线视频| a片在线播放| 一本久久久精品| 欧美在线啊啊啊| 日韩极品无码B| 国产欧美成人精品| 激情婷婷丁香| 91天美传媒在线观看| 国产中文字幕曰本毛片| 98福利在线视频| 亚洲欧美另类激情小说| 人人摸人人舔一区二区| 啊啊啊免费视频| 夜夜嗷嗷一区二区| 久久久无码国精品无码三区三区| 国产在线能看的你懂的| 蜜臀无码一区二区| 神马九九九| 日本99视频| 人人干黄色| 亚洲女优有码无码高清| 精品在线蜜臀| 日韩中文字幕2020| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 高清孕妇孕交 交| 99在线精品视频| 欧美 牲| 99精品在线观看| 日韩欧美成人午夜福利| 欧美日韩传媒| 性高潮久久久久久久久久久| 青青草啪啪网| 操美女人妻| 国产精品色| 婷婷中文网| 夜夜操美女| 淫荡网址| 欧美亚洲综合高清在线| 任你爽视频| 91在线色| 天天干天天日天天射黄色片| 精品国产乱码久久久久久口爆网站| 色 婷97| 日本布卡一区二三区| 欧美论理片| 欧美综合网| 综合久久99亚洲人妻中文在线| 亚洲,欧美,春色,另类| 色色色欧美| 制服乱伦| 国产四虎在线| 大香蕉99热| 超碰97玖玖爱| 东京热熟女亚洲视频网站| 国产91美女视频| 欧美亚洲丝袜美女电影| 丁香婷婷激情五月天无毒不卡 | 国产最新小视频在线播放下载| 国产主播福利| 乱伦图av| 日韩啪啪网| av资源在线观看少妇| 婷婷五月天影院| 综合五月天| 日本精品999| 美女视频尤物网在线看| 波多野结衣AV无码一区| 沈阳熟女高潮对白视频| 蜜臀AV成人精品蜜臀AV久久| 隔壁邻居波多野结衣中文字幕| 亚洲国产另类在线中文| 大屁股xxxxx| av毛片aaaaa免费看| 欧美色九九| 亚洲自拍偷拍视频在线| 精品人妻中文字幕4399| 美女自卫慰黄网站免费| 天天干一区二区| 麻豆 亚洲 97| 96久久久精品| 天天干人人乐| 亚洲av综合伊人久久| 日本精品性生活久久久| 偷拍网站久久男女男| 亚洲国产丝袜熟女av| 日本潮催一卡操| 在线色导航| 99熟女| 色五月69夫妻| 久久久久成人网| 国产男女边吃边摸视频网站| 国产精品青草综合久久| 欧美美女在线高潮999| 99热国产精品| 久久久久亚洲av综合波多野制衣| 国产精品探花在线| 天美传媒av在线| 天天综合站| 水多多映视AV| 天天日日日射| 色婷婷一区二区三区久久午夜| A片大香蕉在线| 久久青青草原免费视频| 国产超碰在线一区| 白丝被操91| 有码人妻系列| 亚洲密乳AV| 亚射在线| 激情无码日韩| 91亚洲欧美综合高清在线| 精品国产91av一区二区三区| 91少妇通奸网站| 97在线免费观看| 91 国产丝袜在线放观看| 一区二区三| 九九热免费国产视频婷婷伊人五月| 人妻少妇无码| 久久草草欧美精品| 草莓精品视频在线免费观看| 和协影院中文字幕三区| 国产亚洲日本精品在线| 漂亮人妻被强中文字幕hd| 91精品久久久久久综合五月天| 熟女熟妇一区二区三四区| 精品色色| 尤物黄色在线观看网站| 少妇特黄一区二区三区| 91麻豆天美国产欧美| 国产资源中文字幕在线| 97伦乱| 六月色色| 青娱乐欧美激情一区二区| 激情文学小说一区二区| 久久国产三区| a天堂视频| 91在线美女| 性欧美999| 超碰九7| 亚洲淫乱骚妇AV| 国产女大学生AV| 久久美女福利是上海美女| 98精品国产乱码久久久久久| 中文字幕国产| 日本一二三免费久久| 久久久久久久久久8888| 丁香五月性爱| 欧美 亚洲精品首页| 18禁美女裸体无遮挡啪啪| 东北女人的毛片| 人人操人人肉久久精品| 国产青一二三| 麻豆天美国美国产| 秋霞成人一级在线观看| 大乔未久88一区| 日韩免费高清大片在线| 久久999久| 丁香六月婷婷久久综合| 二对二中文字幕。| 欧美一二三区四五区| 日韩av不卡在线看| 9999免费精彩视频| 久欲AV| 97 国产一区| 一起草av| 欧美日韩成人| 色播五月婷婷| 伊人91| 午夜寂寞欧美| 蜜桃无码AV一区二区| 日本不卡高清视频| 亚洲日本成人动漫| 91呆哥人妻| 午夜精品探花| 99色在线视频| 99色热| 日韩国语字幕| 黄色二级片网站| 国产精品久久发布| 精品人妻一区二区乱码一区二区| 综合网久久| 久久中出在线| 国产精品动态一区二区三区四四| 国产成人精品一区| 欧美图片校园春色| 青青草一区二区三区四| 色婷婷aV一区二区三区麻豆综合| 强上我不卡卡| 加勒比综合a∨| 精品欧美日韩在线观看| 东京热av影院| 国产一区免费午夜视频| 亚洲春色欧美激情自拍| 色吧5亚洲| 偷拍精品一区二区三区| 操日韩第| 日本久久女同性恋视频| 黄色网址在线免费观看| 97久久精品亚洲| 一区 欧美 日韩 麻豆| 精品综合久久久久久97| 欧美综合另类| 日本熟女免费視颖| 五月丁香网站| 黄久在线| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 亚洲精品一区二区三区新线路| 五月天久久婷婷亚洲| 麻豆视频国产一区二区| 久久riav中文精品| 92性色国产午夜福利在线661| 中文字幕成人理论在线| 亚洲综合另类欧美久久久| 男人的天堂无码| 黄色视频高清无码网站| 日韩精品一区的| 欧美色天堂网在线视频| 东京热男人天堂| 中文字幕一区电影在线观看| 精品人妻1237| 精品久久久久综合无码| 激情文学小说一区二区 | 青青草一本道福利视频| xxxx网站亚洲精品| 久视频在线观看| 天天干人人乐| 日本中文字幕在线电影| 久久久久婷婷精品av电影| 欧美激情性久久久久久| 丁香五月激情五月| 久久久久九九九| 日韩激情中文字幕有码| 神马久久久久久久久久久久| 久操国产在线| 婷婷操逼| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 中文字幕 一区二区 亚洲无码| 九九九九一级| 亚洲国产97在线精品一区| 97综合| 秋霞曰韩R级| 自拍欧美| 91精品女厕偷拍视频| 精品免费1| 99999亚洲| 大香交伊人网| 午夜超碰| 狼人综合婷婷激情四射 | 五月丁香网站| 天天看片青娱乐| 久久久婷婷婷| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 中文字幕十五区| 东京热一区二区中文字幕| 人妻少妇久久久| 天堂网亚洲区手机版| 五月婷婷激情综合| 天天日天天干少妇日| 69人妻精品一区二区绯色| 蜜桃臀久久| 日本国产成人亚洲精品无码| 91日韩网站| 26uuu性| 色偷综合| 国内操逼视频二区| 97超碰9| 色欧美在线| 丁香九月激情| 国内毛片热久久思思热| 九九国产热| 亚欧韩av| 日比av无码| 九九玖玖精品| 精品一区二区成人| 男人的天堂久久久| 综合欧美日韩在线| 伊人AAA| 亚洲 自拍偷拍 欧美| 久久久精品视频欧州站| 老女人爆菊| 国产成人无码a| 九九五月天| 刺激性视频黄页| 中文字幕一二区二三区人妻专区| 九九九九精品视频| 影音先锋国产精品| 婷婷国产精品九区| 午夜寂寞欧美| 2020久久免费视频| 久久综合乱子伦国产免费| 精爱久久| 开心婷婷五月| 插日本熟女视频| 乱伦强奸区日韩| 超碰色美女| 午夜福利在线视频1000| 美女刺激久久国产欧美| 日本欧美一区二区三区免费| 三上悠亚在线毛片91| 99热在线只有精品| 91美女視頻| 97玖玖人妻| 色色色综合网| 日韩啪啪视频| 欧美特大黄一级片片免费| 黄色视频60分钟| 91久久青青草原精品| 大逼色网站| 亚洲在钱| 国产视频97| 五月婷婷青青草娱乐伊人| 国产精品在线一区二区| 国产精品久久久久无码AV会牛| 视频不卡中文字幕| 日本阿v天堂在线观看| 超碰97综合在线| 久久精品99久久久久久| 亚洲日本天堂| 伊人久久亚洲色欲综合网站| 欧美色图 人妻| 欧洲精品一区二区三区| 国产农村妇女精品1区二区| 欧美乱色| 啊啊啊啊二区好大| 久久99草| 久日综合网| 欧美亚洲韩国视频十五区| 九九九九九九免费视频| 97伦综合| 麻豆国产97在线| 日本成人A片网站| 黄在线| 中文字幕狠狠玩| 五月丁香啪啪啪| 在线观看AV不卡| 久久免费少妇| 欧美日本不卡| 九九热免费国产视频婷婷伊人| 久久性爱视频| 日韩色| 日曰骚久久精品| 熟妇人妻丰满久久久久久久无码| 91天堂丝袜美腿| 亚洲毛片基地专区| 日韩色欲久久一二三四区| 91干熟女| 天天干,天天日| 98一区二区精品| 久久久久密臀一区二区| AV天堂因数| 国产高清免费不卡av| 无码 有码 国产18p| 69精品在线| 亚洲天天精品| 亚洲AV无码乱码| 99ri视频| 另类图片五月天| 粉嫩av久久一区二区三区| 亚洲偷拍自拍在线视频| 欧美亚洲第1页| 上床啊啊啊| 日本欧美一区二区三区免费| 老鸭窝成人| 久久综合女优| 欧美91色| 在线色导航| 9久久9综合| 麻豆AV一区二区天美传媒| 色av中文字| 亚州Av天美传媒| 免费观看性欧美一级| 99热66| 国产中文字幕在线| 国产小视频91| 91久久精品美女高潮喷水| 国产精品久久久久无码A√| 久久天天摸| 亚洲国产综合视频| 欧美 亚洲 制服 精品| 久久久久久久久999| www.狠狠| 麻豆国产97在线| 手机不卡视频不卡在线一二三区| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 91九色蝌蚪在线观看| 久久深夜无码| 国产精品久久久久亚洲av| 嫩呦国产一区二区三区AV| 男人的天堂2019AV| 插插综合网天天影视网| 亚洲中文字幕97久久精品少妇| 国产精选视频| 青娱乐av在线| 永久免费发布性爱网| 精久久久| 日本精品88888888| 国产精品蜜乳AV| 国产精品96久久久久久| 亚洲天堂情色| 亚洲成人碰碰| 玖玖爱免费观看视频| 青青青青青手机视频| 婷色五月天| 天堂а√在线最新版在线| 黑白配性爱AV成| 女同亚洲欧美一二三区久久电影| 欧美黄色大片在线观看| 黑人猛交| 五月天AV资源| 日韩不卡码| 人妻AV 中文字幕的| 亚洲一级特黄大片在线播放91| 亚洲风情在线观看| 日韩八十路老熟女| 97超级欧美| 玖玖97综合| 极品美女福利在线观看| 青青青国产手线观看视频2| 精品一区二区三区18| 日韩少妇在线视频| 亚洲成人精品久久久| 亚洲男人天堂Av| 麻豆国产原创AV色哟哟 | 日本国产二线女色| 日本新免费二区三区| 亚洲色9| 日本欧美韩国日产片片在线看免| 欧美五十路熟| 国产60页| 天天澡天天爽日日AV| 欧美亚洲丝袜人妻制服中文99| 久久中久文96| 999久久久久久久久| 超AV色女| 国产精品香蕉| 欧美天堂在线| 色月天AV导航| 久久精品超碰| 欧美精品成人在线播放| 激情小说成人日本无码一| 国产白丝av| 亚州综合色| 激情综合 婷婷五月 红杏| 男人的天堂成人的社区| 国产呦精品一区二区三区下载| 久久国产熟女影院| 操逼大黄片| 中文字幕乱在线伦视频中文字幕乱码在线| 国产午夜精品理论片a大结局| 97色在线视频| 一二三四区操操Av| 清纯唯美综合| 97天天日| 国产精品视频麻豆入口| 久久久国产亚洲精品系列| 玖玖爱免费观看视频| 在线看免费无码AV天堂的| 亚洲av无线观看| 色婷婷电影| 五月丁香综合啪啪| 91色艳| 四虎免费看黄| 女人18精品一区二区三区| 999九九精品| 欧美人妖内射| 国产操伦| 亚洲AV小说| 国产精品网站www| 熟人人妻少妇精品久久| 青娱乐国产剧情av一区| 2021国产成人精品久久| 亚洲人久久久网| 国产亚洲精品A在线观看下载| 高清国产性猛交xxxx乱大交| 网页导航五月天免费一二三区| 玖玖在线视频| 91黑丝操| 天天谢天天干| 久久精品一区二区三区不卡| 99热8| 日本中文熟女视频| 国产精品天干天干综合网麻豆| 久久久久久久9| 天天操天天谢| 色五月69夫妻| 婷婷九月国产| 亚洲国产精品V?在线播放| 中文字幕jul-617人妻熟女| 91老司机在线视频免费观看 | 大屁股xxxxx| www.高清无码诱惑一区.com| 精品视频在线观看精品| 欧美亚洲丝袜人妻制服99| 最新av在线| 亚洲无码超碰免费| 天天影视综合网欧美精品| 亚洲天堂一区二区| 国产日韩在线播放| 97频视在线| 日韩强奸av| 99精品在线观看| 五月天AV资源| 亚州国产精品乱| 日曰骚久久精品| 大香蕉综合| 亚洲高清欧美总合| 91黑丝少妇| 免费成人在线观看91| 九九久久首页| 国产女人和拘做爰视频 | 熟妇色99| A片三级无码| 欧美高清91| 99久久99久久综合| 欧美日韩国产成人高清| 校园春色亚洲无码| 强奸a片网| 亚洲欧美色图片| 天天舔九色婷婷| 欧美顶级黄色大片免费| 久久亚洲日韩国产欧| 色五月首页| 精品97久久| 男生女生啊啊啊啊| 亚洲黄网在哪免费看| 97色综合中文网| 亚洲91av| 国精精品无码一二三区水多多| 日韩免费中文字幕视频| 999久久久国产精品| 欧美在线伊人色| 91熟女视频网| 国产极品一区二区三区三州| 久操av在线| 嗯啊免费视频| 涩涩这里只有精品视频| 偷拍综合网| 久久这里只有精品9| 蜜色网色哟哟| 日日爽夜夜爽| 国产一级黄色片在线观看| 国产一级高清免费观看| 麻豆色约约| 丝袜美腿校园春色| 在线综合 亚洲 欧美中文字幕 | 亚洲熟女乱综合一区二区三区| 色性综合| 黄色片大香蕉| 91人人| 亚洲色人阁| 校园春色中文字幕AV| 丰满人妻-区二区三区免费| 亚洲精品一二区| 少妇人妻太紧太深av| 老熟女乱伦片| 96麻豆精品一区二区三区| 日夜尻逼网| 亚洲素人网| 91男女啊啊啊| 青娱乐亚洲自拍| 夜草网站| 欧美日韩中文字幕人妻| 国产91美女视频| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 99re视频在线观看这里只有精品| 久久直播国产| 天天做日日爱夜夜爽| 最新日韩黄片| 狠狠色色| 99久久综合| 97jingpin| 欧美日韩另类字幕中文| 日本幼女18+| 青青操国产夫妻| 婷婷色综合欧美日韩| 内射夫妻三片| 国产视频一区二区免费| 爱爱动态120秒| 欧美天天谢综合网| 久久鲁夜| 精品午夜福利| 亚洲最大AV网| 麻豆精品A片免费观看| 天天日天天插| 91在线免费精品视频| 香港澳门日本三级网站| 欧美色www亚洲国产阿娇要播| 91久久久久久久久18| 国产一级久久久| 可以看的av| 五月丁香综合激情| 熟女视频久久| 综合网97| 黄色av片三级三级三级免费看| 国产激情在线| 亚洲国产综合久久久性感熟妇| 99啪啪| 综合网亚洲在线| 午夜人人操| 99久久综合网| 日本999精品| 91精品导航| 成人av影院在线观看| 色情综合网| 欧美 日韩 婷婷 五月| 啊啊啊啊免费视频| 国产久久av| 久插不卡| 强奸乱伦AV一天堂网| 99自拍视频在线| 欧美影音在线| 中文字幕免费看| 韩国一级AAA| 欧美男人一区| 综合五月天| 性爱av在线免费观看| 久久久久久久久久久999| 久久久久97| 日本三级韩三级99久久| 午夜福利合集| 国产精品视频精品一二| 99精品无码| 久久国产热视频97电影| 色五月天AV| 日韩激情小说一区二区| 制服诱惑亚洲一区二区三区在线观看| 一个色导综合| 91嫩草在线| 婷婷中文网| 精品中文字幕一区二区l - 百度| 日韩另类| 大屁股人妻女教师撅着屁股| 97精品视频在线播放| 和协无码影院| 97在线视频观看| A级毛片在线看免费| 欧美色图亚洲色,麻豆| 国产不卡精品91| 无码高清专| 国产精品高朝久久久久久久| 九九热精品| 午夜无码熟妇丰满人妻| 另类综合另类| 丁香五月激情综合国产| 国产一区二区成人av在线播放| 久久色激情一区二区三区| 国产成人亚洲精品无码古代早漏男| 少妇淫妇久久久久久久| 制服丝袜第二页| 日本天堂网| 桃色五月天| 亚洲少妇综合在线播放| 黄色成人网久久久久久| 美女9118禁| 伊人久久亚洲色欲综合网站| 亚洲 欧美 制服 另类 自拍| 97在线视频免费| 欧美暴力猛交| 欧美激情亚洲情色| 日本高清一本二本免费不卡| 九九九久千久久激情蜜桃在线看 | 欧美精品99久久久**| 欧美日韩人妻精品一区二区三区| 久久婷婷五月天| 亚洲欧美天| 精品乱子一区二区三区99| 高清孕妇孕交 交| 亚洲少妇色| 中字乱伦AV| 18禁止看精品中文字幕| WWW.操逼.COM| 亚洲 日本 国产 综合| 校园春色五月天| 青青草原伊人网| 精品妇操一区二区三区| 97久久国产亚洲精品超碰热| 久久精品中文| 夜夜免费视频| 亚洲极品| 免费观看一区| 亚洲男人天堂AV| 久草免费在线视频| 国产精品高潮呻吟av久久4虎| 国产乱子伦一区二区三区在线观看| a亚洲欧美色欲| 日本性爱不卡视频| 国产精品久久久久久无码红治院| 色官网色综合| 国产又黄又粗的视频| 亚洲av无码成人精品国产| www久久99| 激情另类激情| 日本黄 R色 成 人网站| 中文字幕在线日亚洲9| 鲁鲁色综合网| 人妻五十路在线| 日韩啪啪视频| 岛国激情视频在线观看| 男女啊啊啊啊啊| 亚洲男人久久综合天堂| 国产第25页在线观看| 人妻激情另类| 日本九九久久99播| 国产97在线 | 亚洲| 久久內射| 99re视频在线播放青草| 黄色电影在线播放综合网站| 无码日韩网站| 美女丝袜激情小说| 亚洲成人性| 一品道视频一区二区三区| 色九月综合| 一区二区三区四区理论片| 久久av成人无码免费| 欧美精品另类人妖xxxx| 亚洲 日本 不卡| 5月婷婷6月六月丁香| 欧美性生活内射| 亚洲婷婷综合网| 色哟哟的毛片| 色网在线| 一起草日韩| 成人A片男人的天堂| 亚洲黄片免费在线播放| 亚洲免费精品一区| 又粗又长又大国产不卡| 天天日B狠狠操| 欧美第一页| 天天摸天天碰天天添青青| www.av家庭乱伦| 久久最新视频免费观看| 国产大陆天天艹| 欧美日动态视频| 日本精品高清一二区一本到| 亚州五月| 人人妻人人操人人乐| 亚洲AV成人精品网站在AV| 亚洲第91页| 国模吧 一区二区三区| 天天干夜夜鈤| 日韩精品人妻系列无码天堂| AV一起草在线| 综合网久久| 韩国黄色片精品久久久| 久操电影| 久久精品视频一区三区小泽玛利亚| 中文字幕aⅴ在线视频| 麻豆 美女 丝袜 人妻 中文| 超碰97欧美在线| 青椒国产97在线熟女| 午夜噜噜噜| 超碰97久久观看| 另类 日韩 熟女| 精品美女久久久久| 啊啊啊啊嗯嗯在线久久久| 欧美亚洲丝袜美女电影| 手机在线看片免费人成视频| J?P?NESEHD熟女熟妇伦| 日本2020一区二区| 久久大陆| 91亚洲精品青草| 五月天伊人| 婷婷AV一区二区三区| 久久久久久一日韩字幕无码| 大色综合| 欲香欲色综合天天伊人| 大香蕉欧美| 欧美刺激色黄片免费看| 日韩一级欧美一级国产一级台湾| 情色图区| 天天综合,91入口| 黑人综合色| 美女丝袜激情小说| 九九超碰综合网| 伊人专区一区二区三区| 立川理惠被中出无码| 婷婷久月| 天天噜| 国产嫩草精品A88AV| 国产AV线| 极品少妇久久久久| 欧美性爱一区二区三区四区| 四季AV一区二区凹凸精品小说| 男人的天堂在线2| 熟妇最新先锋一二三区| 日本九九久久99播| 91国产大片| 欧美日韩美女精品久草一区二区三区| 欧美另类自拍 | 正在播放国产精品一区| 影音先锋视频在线| 人妻献身系列第54部| 伊欧美综合视频| 欧美视频在线视频免费va| 手机在线免费看的av| 亚洲日韩美国人妻| 丁香九月激情| 蜜桃中文字日产乱幕4区| 日韩欧美丝袜诱惑| 超碰97人人乐| 久久风骚城市人| 最新岛国大片| 久久精品99| 99精品丰满人妻无| 久久综合久色欧美综合狠狠| 91熟女网| 欧美大香蕉同搞| 精品久久久久,69国产成人精| 五月天AV资源| 啊啊啊免费视频| 成人七区| 狠狠中文字幕| 日韩有码回春沙龙第一页| 99re视频在线播放青草| 凹凸久久人人| 9 7超碰在线免费观看| 男人的天堂久久| 欧美一级久久久久久久大片动画| 啊啊啊啊嗯嗯嗯用力好爽 | 欧美极品美女aaaaaa级黄片| 中文字幕狠狠玩| 欧美精品双插| 免费操逼91| 婷婷五月天激情小说| 色噜噜人妻av中文字幕| 成人精品一区二区91毛片不卡| 国产精品呦一区二区三区| 高清成年美女黄网站免费大全| 亚洲午夜免费狠狠干| 97超碰欧美手机在线| 色鬼在线综合| 大学生美女口爆| 亚洲 图片 综合91| 搡老女人老熟女91老熟女综合网| 亚欧日韩成人| 天天操人人操骚逼网站| 岛国福利在线精品播放| 台湾佬中文娱乐自偷自拍| 青娱乐福利99| 人妻 制服 日韩 中文 在线| 美女天天干| 日本999精品视频| 秋霞 色色| 精品网站99999| 美女极品一区二区三区| 蜜桃精品一区二区三区久在线| 日韩乱伦影音先锋| 亚洲精品蜜桃久久久| 涩五月婷婷| 亚洲欧美第一页| 国产综合色精品在线观看| 熟女中出视频| 日韩AC| 97伊人网| 求求你操操我| 色婷婷九月天天综合| 大香蕉99999| 狠狠搞 亚洲91| A片 AV一级在线播放观看免费| 91蜜桃传媒精品久久久一区二区| 欧美后进式| 亚洲性爱免费电影| 深夜激情| 激情图片伦理国产一区二区日韩| 一区二区三区黄片免费观看| 亚洲男人的天堂网| 久久秀这里有精品| 精品少妇人妻av久久免费| www久久精品| 久久精品72| 婷婷五月综合激情| 三级激情网站| 九九亚洲| 亚洲玖玖爱| 绑缚麻绳人妻寝取完整版| 一区二区激情国产熟女| 无码聚合| 久久精品国产亚洲AV高清演员表| 久久精品电影在线| 色悠悠伊人网五月天| 国产精品丝袜久久亚洲不卡| 五月久久HDAV| 天天干美少妇一区| AV大香蕉| 国模精品娜娜一二三区| 在线观看高清AV| 国产性爱强奸乱伦大全| 5252色欧美在线男人的天堂| 97在线资源| 色天堂在线观看| 日本99一区二区| 97色爱| 青娱乐大香蕉| 免费网站观看www在线观| 精品久久久久黄少妇| 真实高潮91| 丁香婷婷激情五月天无毒不卡 | 久久综合资源一区二区| 伦激情人妻另类人妻| 成人五月天丁香激情综合| 又粗又长又大国产不卡| 国产偷拍网站| 性爱网站一区二区| 91在线超高颜值国产| 夜间福利片1000无码| 国产亚洲在线观看| 久久最新免费视频23| 区一二区日韩亚洲乱码av电影| 啊啊啊啊在线观看网址| 怡红院亚洲怡春院av| 欧美在线电影| 日韩性爱一级片| 免费一级黄色录像影片| 五月激情天| 97在线欧洲| 97在线播放| 100啪啪视频大全| 色狠狠色| 嗯嗯,好大,好爽,好骚 | 97人人操人人摸| 久久大香蕉| 亚洲日韩XXX| 超碰97欧美| 五月丁香婷婷啪啪| 伊人网在线观看| 9久精品视频在线观看| 激情视频图片| 人人操我人人干| 夜夜操夜夜爽夜夜高潮| 欧美亚洲清纯| 天天插夜夜操| 神马福利久草| 91精品国| 新久久AV| 午夜色婷婷| 又粗又长又大国产不卡| 亚洲电影中字一区二区| 超碰色男人操熟女| 国产丰满少妇久久久精品影院| 9久久精品| 九九久久一区二区三区| 欧美伊人电影| 亚洲色图殴美色图激情乱伦| 校园春色家庭伦理欧美激情| 国产在线观看一区二区三区| 新婚人妻扶着粗大强行坐下| 色五月第四色| 搡老女人老91妇女老熟女| 欧美大香蕉久| 无码99| 久午视频| 91超碰人人操| 热久久99999| 久久骚| 一区二区影院| 中文字幕一二三av| 久久久婷婷| 亚洲欧美另类激情小说| 97网址www| 久操网视频| 亚洲一本色码中文字幕| 99老司机精品视频在线观看| 91女优在线观看| 亚洲欧美在线观看2021| 97精品一区| 激情小说成人日本无码一| 后入式999| 丝袜美腿诱惑亚洲欧美视频在线观看 | 四虎影视精品| 亚洲不卡不卡中文字幕不卡| 日本色色色色色视频| 91丝袜美女| 天天插天天射| 狠狠图片青青草| 日韩乱伦AⅤ| 中国熟妇| 国产精品3| 欧美情色贴图| 草b在线| 亚洲、日韩、综合、另类| 午夜120视频在线观看| 五十路熟女人妻一区二区三区四区五| 豆1无夜无码| 午夜精品99久久久久传媒| 午夜精品久久久久久久99蜜桃一| 91在线免费精品视频| 91劲爆| 男人 天堂 日 亚洲| 国模限制级电影| 欧美东京热精品A∨| 性欧美| 精品欧美日韩在线观看| 国产乱婷婷精品二区三区| 蜜臀AV网站| 在线可观看的黄色网址| 免费福利视频中文字幕| 国产精品视频麻豆入口| 国产91影院| 性天堂| 无码久久国产| 欧美精品久久久久久久丰满| 中国一级αV| 老司机福利青青草| 亚洲情色 无码专区| 1二区9| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 在线观看精品国产免费| 日韩综合成人免费视频| A级国产欧美激情在线| 丁香五六月啪啪| xxx0国产在线播放| 九九热精品| 九九九网页| 999 久久久| 精品久| 国产兽交视频在线播放| 5278欧美一区二区三区| 99综合| 极品内射| 午夜精品久久久久久久久久久久久|