1. 程式人生 > >gcc使用---動態庫連結靜態庫

gcc使用---動態庫連結靜態庫

       00001f18 a _DYNAMIC
       00001ff4 a _GLOBAL_OFFSET_TABLE_w _Jv_RegisterClasses
       00001f08 d __CTOR_END__
       00001f04 d __CTOR_LIST__
       00001f10 d __DTOR_END__
       00001f0c d __DTOR_LIST__
       000005e4 r __FRAME_END__
       00001f14 d __JCR_END__
       00001f14 d __JCR_LIST__
       00002010 A __bss_start w [email protected]
@GLIBC_2.1.3
       00000520 t __do_global_ctors_aux
       00000430 t __do_global_dtors_aux
       00002008 d __dso_handle w __gmon_start__
       000004e7 t __i686.get_pc_thunk.bx
       00002010 A _edata
       00002018 A _end
       00000558 T _fini
       000003c8 T _init
       00002010 b completed.7021
       00002014 b dtor_idx.7023
       000004b0 t frame_dummy
       00000508 T print_niuzai_said

       000004ec T print_papa_said
           U [email protected]@GLIBC_2.0
       0000200c D sz_static

相關推薦

gcc使用---動態連結靜態

       00001f18 a _DYNAMIC        00001ff4 a _GLOBAL_OFFSET_TABLE_w _Jv_RegisterClasses        00001f08 d __CTOR_END__        00001f04 d __CTOR_LIST__    

動態靜態編譯測試:含靜態連結動態靜態動態連結靜態動態

本文的目的是測試各種型別庫的編譯後的使用效果,包括庫又連結其他庫的編譯方法,使用方法,依賴性等。 太長不看版:請跳至文章最後的總結對比表。 一。內容包含: ①靜態庫libbb.a依賴靜態庫libaa.a的測試; ②靜態庫libbb.a依賴動態庫libaa.so的測試;

gcc動態靜態連結順序

so檔案:動態庫 a檔案: 靜態庫 exe檔案:可執行程式(linux下以檔案屬性來標示是否是可執行檔案,與字尾名無關) gcc中連結順序問題,總結出以下幾點: 1,動態庫中可以包含另一個靜態庫,通過引數 -lxxx 把靜態庫libxxx.a加入so檔案中,這樣so檔案中 &nbs

淺談GCC/Clang生成和連結靜態/動態

為了方便下面的講解,先寫兩個C++原始檔,程式碼如下: 1 2 3 4 5 //add.cpp int add(int a, int b) { return a + b; } 1 2 3 4 5 6 7 8 9 10 11 //main.cpp #in

Linux下動態(.so)和靜態(.a) 的區別 Linux下動態(.so)和靜態(.a) 的區別 動態(.so)連結靜態(.a)的情況總結

Linux下動態庫(.so)和靜態庫(.a) 的區別   靜態庫在程式編譯時會被連線到目的碼中,程式執行時將不再需要該靜態庫。編譯之後程式檔案大,但載入快,隔離性也好。 動態庫在程式編譯時並不會被連線到目的碼中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。多個

QtEmbedded-4.8.6-arm 編譯選擇從 動態變化到靜態 時,生成的Makefile連結路徑下如果有動態靜態,優先選擇動態編譯應用

問題:QtEmbedded-4.8.6-arm 編譯選擇從 動態庫到靜態庫 時,發現的一個疑惑:,生成的Makefile連結庫路徑下如果有動態庫和靜態庫,優先選擇動態庫編譯應用 具體現象: 我最初是使用動態庫的 QtEmbedded-4.8.6-arm (編譯器選擇時,是 ./co

Linux下動態靜態連結

一、檢視連結了哪些指令 ldd 程式名字 二、在應用程式需要連線外部庫的情況下,linux預設對庫的連線是使用動態庫,在找不到動態庫的情況下再選擇靜態庫。使用方式為: gcc test.cpp -L. -ltestlib 如果當前目錄有兩個庫libtestlib.

gcc 編譯工具(下)--- 外部、共享靜態動態

gcc 編譯工具(下)— 外部庫、共享庫、靜態庫、動態庫 1. 標頭檔案與庫檔案 在使用C語言和其他語言進行程式設計時,需要標頭檔案來提供對常數的定義和對系統及函式呼叫的宣告。 庫檔案是一些預先編譯好的函式集合,那些函式都是按照可重用原則編寫的。他們通

linux下g++ 編譯時動態靜態連結和標頭檔案問題

原來編譯的時候都是用的很隨意,沒用系統的總結一下,這幾天在編譯的時候遇到一些下問題,於是就總結一下,省得過幾天又給忘了。 1.動態庫和靜態庫簡介 靜態庫在程式連結的時候會自動的連結到程式裡,所以一旦編譯完成,靜態庫就不需要了,靜態庫以.a結尾。  動態庫在編譯時不會被連線到目的碼中,而是在程式執行

在Linux動態Project中連結靜態時,遇到error adding symbols: Bad value的問題

現象:在生成某個動態庫比如SDS_Utility.so的時候,需要靜態連結某些庫,如libboost_log.a, 報上述錯誤。 原因:靜態庫想連結進動態庫,必須滿足一定的條件,靜態庫需要加-fPIC選項編譯,編譯成Position Independent C

gcc編譯工具生成動態靜態之一----介紹

 1.庫的分類 根據連結時期的不同,庫又有靜態庫和動態庫之分。 靜態庫是在連結階段被連結的(好像是廢話,但事實就是這樣),所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。 有別於靜態庫,動態庫的連結是在程式執行的時候被連結的。所以,即使程式編譯完,庫仍須保留在系統上

Windows動態連結靜態

一、靜態庫(lib) ①Win32程式不能連結64位靜態庫; ②Debug下可以連結Release版的靜態庫,反之亦然; 二、動態連結庫(dll) ①32位程式依賴32位dll,dll檔案可以放在“C:\Windows”目錄下,也可以放在“C:\Windows\SysWOW64”目錄,但不能

ubuntu下gcc連結靜態.a檔案

    ubuntu系統下需要連結.a靜態庫檔案,查找了一些資料執行gcc命令發現都不能連結成功。最後自己通過一些測試,成功連結並且執行。     使用命令如下: gcc -o test dll_test.c -L  ./  SDKUseDll.a     說明: test

Linux下gcc生成和使用靜態動態詳解

一、基本概念 1.1什麼是庫 在windows平臺和linux平臺下都大量存在著庫。 本質上來說庫是一種可執行程式碼的二進位制形式,可以被作業系統載入記憶體執行。 由於windows和linux的平臺不同(主要是編譯器、彙編器和聯結器的不同),因此二者庫的二

動態(.so)連結靜態(.a)的總結

動態庫(.so)連結靜態庫(.a)的情況總結  一般來說在連結時想要使用靜態庫有三種方法: 1、link時加上 -static 選項;當加上 -static選項後,gcc會把所有用到的庫都做靜態連線。 2、link時直接指定想要靜態連線的.a檔案的絕對路徑。優點是除非.a檔案不存在,否則肯定有效;缺點也是很

gcc,c++ 動態呼叫靜態

生成動態庫: 需要的目標檔案得用-fPIC選項生成. 而靜態庫所需的目標檔案可以不用-fPIC選項. 一個應用程式呼叫動態庫, 而這個動態庫其中的函式呼叫某靜態庫時,如何生成應用程式呢? 例: /////// static.h void static_prin

自己在linux上編譯、連結動態靜態的學習筆記

在平常的專案中,我們都是使用公司要求的makefile、makedebug一類的檔案,因此,在編譯、連結、生成和連結動態庫與靜態庫的時候,我們只是簡單的使用一些已經設定的變數,只是簡單的修改、新增一些檔名,或許這次我們編譯通過了,但是,在某一個時候,可能出現了一個問題,無論

gcc建立和使用動態靜態

本文以工程libtest為例來說明用gcc建立和使用靜態庫、動態庫的過程。libtest工程目錄結構如下: libtest/include/hello.h檔案內容: #ifndef __HELLO_H__ #define __HELLO_H__ void sayH

gcc編譯工具生成動態靜態

來自:http://www.cnblogs.com/fnlingnzb-learner/ 1.庫的分類根據連結時期的不同,庫又有靜態庫和動態庫之分。靜態庫是在連結階段被連結的(好像是廢話,但事實就是這樣),所以生成的可執行檔案就不受庫的影響了,即使庫被刪除了,程式依然可以成功執行。有別於靜態庫,動態庫的連結是

malloc,colloc,realloc內存分配,動態靜態的生成與調用

lac 輸出 初始化 clu 技術 pragma num idt return ?? 1.在main方法裏面直接定義一個很大的數組的時候。可能會出現棧溢出:錯誤代碼演示: #include<stdio.h> #include<stdlib.h&g