91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解 linux c++的編譯器g++的基本使用

發布時間:2020-10-19 13:32:01 來源:腳本之家 閱讀:274 作者:lqh 欄目:編程語言

linux c++的編譯器g++基本使用

g++是 linux下c++的編譯器,在執行編譯工作的時候,總共需要4步

1.預處理,生成.i的文件
2.將預處理后的文件不轉換成匯編語言,生成文件.s
3.有匯編變為目標代碼(機器代碼)生成.o的文件
4.連接目標代碼,生成可執行程序

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

生成動態庫文件,例如: g++ -shared hellp.cpp -o libhello.so

        調用動態庫的時候有幾個問題會經常碰到,有時,明明已經將庫的頭文件所在目錄通過include進來了,庫所在文件通過 “-L”參數引導,并指定了“-l”的庫名,但通過ldd命令察看時,就是死活找不到你指定鏈接的so文件。其實編譯鏈接上了共享庫不代表執行時可以找到。所以“-L”什么的對執行沒有用,你需要指明共享庫的路徑。方法有三個:

        a.修改 LD_LIBRARY_PATH,指明共享庫的路徑。LD_LIBRARY_PATH:這個環境變量指示動態連接器可以裝載動態庫的路徑。在終端下使用如下命令:

[root@localhost sharelib]# export LD_LIBRARY_PATH = .
[root@localhost sharelib]# export LD_LIBRARY_PATH = your lib dir export

       b.通過/etc/ld.so.conf文件來指定動態庫的目錄。然后運行ldconfig命令更新搜索共享庫的路徑。通常這個做法就可以解決庫無法鏈接的問題并且一勞永逸。

       c.或者把庫文件拷貝到/lib下,然后ldconfig就ok了。這個方法有的取巧,且破壞原庫文件的純潔性,不應是首選方法。 

        修改/etc/ld.so.conf文件,然后調用 /sbin/ldconfig需要有root權限,如果沒有root權限,那么只能采用輸出LD_LIBRARY_PATH的方法了。

linux下文件的類型是不依賴于其后綴名的,但一般來講:

.o,是目標文件,相當于windows中的.obj文件
.so 為共享庫,是shared object,用于動態連接的,和dll差不多
.a為靜態庫,是好多個.o合在一起,用于靜態連接
.la為libtool自動生成的一些共享庫,主要記錄了一些配置信息。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴桥县| 苏州市| 瑞昌市| 东宁县| 密云县| 油尖旺区| 贵港市| 龙南县| 卫辉市| 宁波市| 克拉玛依市| 介休市| 边坝县| 霍林郭勒市| 晋宁县| 连山| 巴林右旗| 临清市| 临潭县| 苍溪县| 南澳县| 兴和县| 景洪市| 霍城县| 平顺县| 报价| 巨鹿县| 板桥市| 北海市| 汤阴县| 武平县| 盘锦市| 平定县| 双柏县| 长葛市| 锡林浩特市| 汾阳市| 伊宁县| 灌阳县| 张北县| 贵定县|