1. 程式人生 > >ubuntu下gcc連結靜態庫.a檔案

ubuntu下gcc連結靜態庫.a檔案

    ubuntu系統下需要連結.a靜態庫檔案,查找了一些資料執行gcc命令發現都不能連結成功。最後自己通過一些測試,成功連結並且執行。

    使用命令如下: gcc -o test dll_test.c -L  ./  SDKUseDll.a

    說明: test是編譯後的執行程式的名稱,dll_test.c是原始碼檔案, -L  ./   是指包含.a檔案包含的目錄,我測試過程使用和原始檔一樣的當前目錄,SDKUseDll.a為需要連結的靜態庫。便於測試,我是把.a檔案需要的標頭檔案和.a檔案一併放入到.c的原始碼檔案的同一個目錄下。

     如果把.a檔案放入到原始碼檔案的lib子目錄下,那麼執行如下命令即可連結到:  gcc -o test dll_test.c -L  ./lib  SDKUseDll.a

相關推薦

ubuntugcc連結靜態.a檔案

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

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

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

UbuntuGCC引用mysql標頭檔案檔案

1.安裝mysql-server:    sudo apt-get install mysql-server-5.1 2.gcc連線mysql的庫安裝:    sudo apt-get install libmysqlclient-dev   安裝後,標頭檔案在/usr/include/mysql,庫檔案在

SVN 預設忽略靜態 .a檔案解決辦法

我是在向SVN伺服器上傳檔案時,遇到了這個問題,檔案上傳後,再下載後發現所有的.a檔案全部丟失,後來才知道是上傳檔案的時候.a檔案根本就沒傳上去,查詢原因才知道上傳的時候.a檔案被過濾掉了,後來找到了解決的辦法,大家可以借鑑下。 1、右鍵Finder,選擇 前往

通過gcc建立靜態.a、動態.so及其使用

gcc的常用選項 -v:檢視gcc版本 -c:只編譯,生成.o檔案,不進行連結 -g:包含除錯資訊,方便使用gdb除錯 -D:編譯時定義巨集 靜態庫的建立和使用 這裡使用命令ar,常用的選項是: -r:替換歸檔中已有的檔案或加入新檔案 -t:顯示歸檔檔

FFmpeg3.1.1編譯IOS靜態.a檔案

一、準備工作 1.下載最新的  gas-preprocessor.pl 複製gas-preprocessor.pl到/usr/bin下, 修改檔案許可權:chmod 777 /usr/bin/gas-preprocessor.pl 2.下載編譯指令碼/FFmpeg-i

iOS svn提交靜態.a檔案

使用命令列新增檔案 1.開啟終端,輸入cd,空格,然後將需要上傳的.a檔案所在的資料夾(不是.a檔案)拖拽到終端(此辦法無需輸入繁瑣的路徑,快捷方便) ,回車; 2.之後再輸入如下命令:svn add libOCMock.a,回車; 3.之後會出現:A  (bin)  

IOS生成同時支援armv7,armv7s,i386的靜態.a檔案

轉載自:http://www.cnblogs.com/wt616/p/IOS%E5%88%B6%E4%BD%9C%E9%9D%99%E6%80%81%E5%BA%93%E6%96%87%E4%BB%B6.html 許多第三方提供的.a檔案(一般是那些SDK),嵌入到我

sqlite原始碼在mac編譯靜態.a檔案

下載最新原始碼: http://sqlite.org/sqlite-src-3071401.zip 解壓 ./configure 修改Makefile檔案 找到  sqlite3$(TEXE): $(TOP)/src/shell.c libsqlite3.la sqli

iOS 引用外部靜態(.a檔案)時,Category方法無法載入問題

問題: +[UIImage imageNamedFromBundleWithPNG:]: unrecognized selector sent to class 0x199812698 解決方法為:找到 target 的圖示,更改其 Other Linker Flags

iOS 打包靜態.a檔案

製作.a 1、新建專案 –> Cocoa Touch Static Library 2、新增庫需要包含的程式碼 3、將需要暴露的.h檔案暴露出來,.m會自動編譯到.a檔案中 4、分別選擇真機裝置和模擬器,command + B編譯,st

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

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

打包靜態.a檔案的方法(ar,ranlib,nm命令介紹)

這是由於最早在Unix系統上ar程式是單純用來打包多個.o到.a(類似於tar做的事情),而不處理.o裡的符號表。Linker程式則需 要.a檔案提供一個完整的符號表,所以當時就寫了單獨的ranlib程式用來產生linker所需要的符號資訊。也就是說,產生一個對linker合 格的的.a檔案需要做ar和ra

建立靜態.a檔案和動態.so

  示例五 檢視靜態庫中的檔案   [[email protected] lib]# ar -t libhycu.a   base64.c.o   binbuf.c.o   cache.c.o   chunk.c.o   codec_a.c.o   …   xort.c.o   [[email&#

iOS 生成靜態.a檔案

做iOS開發的同學們都知道,我們在開發的過程中經常用到一些第三方的庫,我們可以呼叫,但是看不見他們的原始碼。 有時我們不想別人看見我們的原始碼,也需要生成靜態庫,那怎麼生成呢? 首先,我們要建立一個CoCoa Touch Static Library工程 建立一個CoCoa

gcc 使用靜態檔案 連結檔案 .a makefile .so

上篇文章說了如何生成靜態庫檔案:http://blog.csdn.net/lanmanck/archive/2009/10/12/4659161.aspx 這裡也有篇文章說的很好:http://wickyl.javaeye.com/blog/137460 這裡提一下使用方法

GCC 編譯動態 so檔案時,靜態連結libmysqlclient.a 與動態連結引數一起使用問題。

直接放結論, 下面是編譯一個使用了mysql C API 的 mysql.so 檔案(我們的業務中,它是zbx加裁的modules so檔案) gcc -fPIC -shared -o mysql.so mysql.c \ -I/usr/include

linux封裝函式——動態.so和靜態.a(程式碼實現及連結方式)

在linux環境下的連結庫分為靜態連結庫(.a庫)和動態連結庫(.so庫),其作用是把C程式編譯好做成一種可執行連結檔案,主程式檔案呼叫這些程式的函式介面是可以使用a庫或so庫,在主程式中只需要include含有庫中提供的函式介面宣告的標頭檔案即可。所以學會如何

linux靜態.a和動態.so檔案的生成和使用

1.靜態庫是一些目標檔案(字尾名為.o)的集合體而已。 2.靜態庫的字尾名是.a,對應於windows作業系統的字尾名為.lib的靜態庫。 3.可以使用ar命令來建立一個靜態庫檔案。 來看一個例項,根據書中的程式碼簡化的,先看一看可以編譯成庫檔案的原始檔中的程式碼: /* test.c */ i

Ubuntumakefile及gcc生成靜態動態的簡單使用舉例

cxx 測試 終端 工程 大神 efi debug 內容 pro 環境:Ubuntu-13.10 32位(虛擬機)、gcc4.8.1 首先創建一個test_makefile_gcc文件夾,此test_makefile_gcc文件夾下包括:src文件夾用