linux c++的編譯器g++基本使用
成都創(chuàng)新互聯(lián)是一家專注于成都網站設計、網站制作與策劃設計,右江網站建設哪家好?成都創(chuàng)新互聯(lián)做網站,專注于網站建設10余年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:右江等地區(qū)。右江做網站價格咨詢:028-86922220
g++是 linux下c++的編譯器,在執(zhí)行編譯工作的時候,總共需要4步
1.預處理,生成.i的文件
2.將預處理后的文件不轉換成匯編語言,生成文件.s
3.有匯編變?yōu)槟繕舜a(機器代碼)生成.o的文件
4.連接目標代碼,生成可執(zhí)行程序
g++ 編譯c++經常使用的參數:
-c
只編譯,不連接。例如: g++ -c helloworld.cpp
只生成helloworld.o不連接
-o
指定輸出文件名。例如:g++ -c helloworld.cpp -o abc.o
默認是生成helloworld.o,用-o abc.o以后,就生成的是abc.o
-I
附加一個包函頭文件的路徑。例如:g++ helloworld.cpp -I"/usr/helloworld/include"
-l
小的L, 附一個庫,例如要使用libabc.so 就g++ helloworld.cpp -labc
-L
添加一個庫的路徑,例如 g++ hello.cpp -L"/usr/hello/lib" -labc
-shared
生成動態(tài)庫文件,例如: g++ -shared hellp.cpp -o libhello.so
調用動態(tài)庫的時候有幾個問題會經常碰到,有時,明明已經將庫的頭文件所在目錄通過include進來了,庫所在文件通過 “-L”參數引導,并指定了“-l”的庫名,但通過ldd命令察看時,就是死活找不到你指定鏈接的so文件。其實編譯鏈接上了共享庫不代表執(zhí)行時可以找到。所以“-L”什么的對執(zhí)行沒有用,你需要指明共享庫的路徑。方法有三個:
a.修改 LD_LIBRARY_PATH,指明共享庫的路徑。LD_LIBRARY_PATH:這個環(huán)境變量指示動態(tài)連接器可以裝載動態(tài)庫的路徑。在終端下使用如下命令:
[root@localhost sharelib]# export LD_LIBRARY_PATH = . [root@localhost sharelib]# export LD_LIBRARY_PATH = your lib dir export
b.通過/etc/ld.so.conf文件來指定動態(tài)庫的目錄。然后運行l(wèi)dconfig命令更新搜索共享庫的路徑。通常這個做法就可以解決庫無法鏈接的問題并且一勞永逸。
c.或者把庫文件拷貝到/lib下,然后ldconfig就ok了。這個方法有的取巧,且破壞原庫文件的純潔性,不應是首選方法。
修改/etc/ld.so.conf文件,然后調用 /sbin/ldconfig需要有root權限,如果沒有root權限,那么只能采用輸出LD_LIBRARY_PATH的方法了。
linux下文件的類型是不依賴于其后綴名的,但一般來講:
.o,是目標文件,相當于windows中的.obj文件
.so 為共享庫,是shared object,用于動態(tài)連接的,和dll差不多
.a為靜態(tài)庫,是好多個.o合在一起,用于靜態(tài)連接
.la為libtool自動生成的一些共享庫,主要記錄了一些配置信息。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
分享文章:詳解linuxc++的編譯器g++的基本使用
標題網址:http://aaarwkj.com/article30/igioso.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供商城網站、營銷型網站建設、外貿網站建設、品牌網站制作、品牌網站設計、網站維護
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)