日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

adb: createprocessw failed: 系统找不到指定的路径_gcc编译过程、gcc命令参数、静态库和动态库搜索路径...

發(fā)布時(shí)間:2023/12/19 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 adb: createprocessw failed: 系统找不到指定的路径_gcc编译过程、gcc命令参数、静态库和动态库搜索路径... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、gcc編譯過(guò)程

gcc -E hello.c -o hello.s //預(yù)處理
gcc -S hello.s -o hello.i //編譯
gcc -c hello.i -o hello.o //匯編
gcc hello.o -o hello //鏈接

1)預(yù)處理,C編譯器對(duì)各種預(yù)處理命令進(jìn)行處理,包括文件包含、宏定義的擴(kuò)展、條件編譯的選擇等;

2)編譯,將預(yù)處理得到的源代碼文件,經(jīng)過(guò)“翻譯轉(zhuǎn)換”,產(chǎn)生機(jī)器程序,得到機(jī)器語(yǔ)言的匯編文件;

3)匯編,將匯編代碼翻譯成機(jī)器碼,但是還不能運(yùn)行;

4)鏈接,處理可重定向文件,把各種符號(hào)引用和符號(hào)定義轉(zhuǎn)換成為可執(zhí)行文件中的合適信息,通常是虛擬地址。

二、gcc常用命令參數(shù)

1、gdb調(diào)試 -g

gcc test.c -o test -g //生成的test可以使用gdb命令進(jìn)行調(diào)試

2、指定所使用到的函數(shù)庫(kù) -l(小寫(xiě)l);指定函數(shù)庫(kù)所在的文件夾 -L;指定頭文件所在的文件夾 -I(大寫(xiě)i);

gcc test.c -L/path/lib -lxxx -I/path/include //使用順序不分先后

3、編譯優(yōu)化

gcc -O test.c //編譯器對(duì)代碼自動(dòng)優(yōu)化編譯,默認(rèn)不優(yōu)化
gcc -o1 test.c //設(shè)置優(yōu)化級(jí)別為1;一般選擇2,3會(huì)有很多bug風(fēng)險(xiǎn)

4、設(shè)置警告為錯(cuò)誤

gcc -Werror test.c -o test

5、將所有警告信息全開(kāi)

gcc -Wall test.c

6、編譯時(shí)設(shè)置宏

gcc test.c -o test -DTRUE //相等于在代碼第一行定義 #define TRUE 1
gcc test.c -o test -Dmacro=string //代碼第一行定義 #define macro string

7、gcc編譯標(biāo)準(zhǔn)

gcc test.c -o test //默認(rèn)gcc test.c -o test -std=gun89

GCC -std編譯標(biāo)準(zhǔn)一覽表?c.biancheng.net

三、靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

一、靜態(tài)鏈接庫(kù)搜索路徑順序:

  • ld會(huì)去找gcc命令中的參數(shù)-L
  • 環(huán)境變量LIBRARY_PATH
  • 默認(rèn)路徑/lib、/usr/lib、/usr/local/lib
  • LIBRARY_PATH和LD_LIBRARY_PATH區(qū)別與使用:

    • 開(kāi)發(fā)時(shí),設(shè)置LIBRARY_PATH,以便gcc能夠找到編譯時(shí)需要的動(dòng)態(tài)鏈接庫(kù)。
    • 發(fā)布時(shí),設(shè)置LD_LIBRARY_PATH,以便程序加載運(yùn)行時(shí)能夠自動(dòng)找到需要的動(dòng)態(tài)鏈接庫(kù)。

    二、動(dòng)態(tài)鏈接時(shí)、執(zhí)行時(shí)搜索路徑順序:

    1)ld.so動(dòng)態(tài)共享庫(kù)搜索順序

  • ELF可執(zhí)行文件中動(dòng)態(tài)段DT_PATH指定;gcc加入連接參數(shù)“-Wl,-rpath”指定動(dòng)態(tài)庫(kù)搜索路徑,多個(gè)路徑之間用冒號(hào)分隔;
  • 環(huán)境變量LD_LIBRARY_PATH指定路徑;
  • /etc/ld.so.cache中緩存的動(dòng)態(tài)庫(kù)路徑。通過(guò)配置文件/etc/ld.so.conf增刪路徑(修改后需要運(yùn)行l(wèi)dconfig命令);
  • /lib/
  • /usr/lib/
  • 2)與動(dòng)態(tài)庫(kù)鏈接相關(guān)的命令

    • ld是gcc的鏈接程序;
    • ldd是查看可執(zhí)行文件中所依賴(lài)的庫(kù),eg:ldd a.out;
    • ldconfig用來(lái)更新/etc/ld.so.conf文件;
    • nm查看.so庫(kù)中的函數(shù)名字,標(biāo)記是T的就是動(dòng)態(tài)庫(kù)里面生成的名字;eg:nm -C test|grep static //在程序文本段查找static

    3)動(dòng)態(tài)庫(kù)搜索路徑順序

  • 編譯目標(biāo)代碼時(shí)指定的動(dòng)態(tài)庫(kù)搜索路徑;
  • 環(huán)境變量LD_LIBRARY_PATH指定的動(dòng)態(tài)庫(kù)搜索路徑;
  • 配置文件/etc/ld.so.conf中指定的動(dòng)態(tài)庫(kù)搜索路徑;/etc/ld/so.conf第一行有個(gè)引用命令:include ld.so.conf.d/*.conf;因此最優(yōu)雅的方式是在ls.so.conf.d目錄下創(chuàng)建一個(gè)自己的程序依賴(lài)的配置文件,配置文件內(nèi)容為程序依賴(lài)的動(dòng)態(tài)庫(kù)路徑,一個(gè)路徑一行;最后ldconfig更新配置文件;
  • 默認(rèn)動(dòng)態(tài)庫(kù)搜索路徑/lib/
  • 默認(rèn)動(dòng)態(tài)庫(kù)搜索路徑/usr/lib/
  • 4)動(dòng)態(tài)庫(kù)路徑設(shè)置方法

  • LD_LIBRARY_PATH環(huán)境變量指定,也可以放到.bashrv中固化下來(lái),可也以放到當(dāng)前用戶(hù)的.bashrc只對(duì)當(dāng)前用戶(hù)有效;
  • 如果啟用ls.so.cache的話,系統(tǒng)會(huì)在/etc/ld.so.cache中存儲(chǔ)所有可引用的動(dòng)態(tài)鏈接庫(kù)。這個(gè)文件內(nèi)容可以通過(guò)/etc/ls.so.conf來(lái)指定;這是比較固定的機(jī)制,對(duì)全局用戶(hù)有效;設(shè)置后需要root調(diào)用ldconfig刷新;
  • 默認(rèn)的標(biāo)準(zhǔn)庫(kù)路徑,如果是64位,還包括/lib64/、/usr/lib64/
  • 如果只想對(duì)某個(gè)特定程序起作用,可以在編譯時(shí)指定搜索路徑。gcc的 -Wl和-rpath參數(shù)
  • /usr/local/lib/和/usr/local/lib64/不在標(biāo)準(zhǔn)路徑之列
  • Linux下動(dòng)態(tài)鏈接庫(kù)加載路徑及搜索路徑問(wèn)題_Linux_腳本之家?www.jb51.net

    ldconfig作用是在ld.so.conf和默認(rèn)路徑(/lib/、/usr/lib/)中所列出目錄下搜索動(dòng)態(tài)庫(kù);

    編譯時(shí),ld鏈接器指定鏈接什么庫(kù),編譯程序的最后一步是運(yùn)行l(wèi)d;

    程序運(yùn)行時(shí),ld.so動(dòng)態(tài)連接器,根據(jù)指定的路徑加載庫(kù);

    緩存文件/etc/ld.so.cahche,保存已經(jīng)排好序的動(dòng)態(tài)鏈接庫(kù)名字列表;

    總結(jié)

    以上是生活随笔為你收集整理的adb: createprocessw failed: 系统找不到指定的路径_gcc编译过程、gcc命令参数、静态库和动态库搜索路径...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。