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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GCC详解的-Wl选项说明与测试

發布時間:2023/12/15 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GCC详解的-Wl选项说明与测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在GCC編譯程序時,由于GCC命令不僅能夠編譯,也能夠鏈接程序,GCC鏈接程序是通過ld命令實現。那如何將GCC的命令行參數傳遞給ld命令呢。通常在編譯時通過使用-Wl這個選項來實現的。

測試例程

測試例程如下:(libc.so.6是復制/lib下到當前路徑下)

編譯

??gcc?-o?test?test.c?-I.?-L.?-lc?-Wl,-rpath=.???

其中
-I. 是指定頭文件路徑為當前目錄下;
-L. 是指定庫文件路徑為當前目錄下;
-lc 是從-L指定庫文件路徑下去找libc.so.6這個庫,也就是庫名砍頭去尾(類似使用過-lpthread)
-Wl,-rpath=. 為告訴編譯器將后面的參數傳遞給鏈接器>

-Wl,其格式如下:

??gcc?-Wl,param1,param2,param3,...

在調用ld命令時,會等效于如下:

??ld?param1?param2?param3?

注意:-Wl, 后的逗號(,)必不可少,如果要傳遞多個參數,參數之間間用逗號,分隔

-Wl,-Bstatic

指定后續ld在處理 -l 參數來鏈接庫文件的鏈接方式首選靜態庫

-Wl,-Bdynamic

指定后續ld在處理 -l 參數來鏈接庫文件的鏈接方式首選動態庫

例如: -Wl,-Bstatic -la -lb -lc -Wl,-Bdynamic -ld -le

會被解釋成 :ld liba.a libb.a libc.a libd.so libe.so

-Wl,-rpath -Wl,/home/yimning/linux/rpatch_test/

會被解釋成:ld -rpath /home/yimning/linux/rpatch_test/

查看關聯庫指向與rpatch(編譯之后)

此時查看libc.so.6的依賴庫路徑變為./libc.so.6
查看test的文件信息如下這一行:
0x000000000000001d (RUNPATH) Library runpath: [.]

總結

以上是生活随笔為你收集整理的GCC详解的-Wl选项说明与测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。