A. linux的靜態鏈接庫.a文件,能用到嵌入式的Linux里嗎
linux下能用,嵌入式linux肯定也能用啊。是一樣的
windows下也能編譯,我是用的xilinx專有的EDK編譯的,選擇好了庫就行了
當然只能在linux系統下調用
B. linux中,a文件與.so文件有什麼關系嗎
.a和.so文件都是函數庫文件。庫是一組預先編譯好的函數的集合,庫文件的名字以內lib開頭,隨後的容部分指明這是什麼庫(例如c代表C語言庫,m代表數學庫)。
.a代表的是靜態函數庫,當同時運行多個程序並且都使用到同一個函數庫的函數時,內存中就會有同一函數的多份副本,會消耗大量寶貴的內存。
.so是共享函數庫,可以克服.a函數庫的不足。當一個程序使用共享函數庫時,程序本身不再包含函數代碼,而只是引用共享代碼,當實際調用時,共享庫才被載入到內存中。
.a文件類似於Windows下的.lib文件,.so文件類似於Windows下面的.dll文件,這樣就好理解了。
C. LInux 如何使用GCC編譯器將一個文件夾下的100個.o文件打包成一個靜態庫文件(.a)
你已來經用gcc編譯出目標文件自了,用ar工具打包成.a文件就行了啊,示例:
如上圖,假設我有test1.c,test2.c兩個源文件,先使用gcc -c *.c將源文件編譯成目標文件,可以看到,生成了test1.o,test2.o兩個目標文件,然後,使用ar命令:ar crv libtest.a *.o將該目錄下的所有目標文件打包生成了libtest.a文件。這樣,你在編譯的時候就可以直接使用這個靜態庫了。
D. linux使用其他的頭文件
1)
C庫這種東西,有標准,但沒有官方實現,誰想自己寫一個都行。當然常用的就那麼幾個,vc的libcmt.lib和msvcrxx.dll,linux上么,glibc吧。另外也有μclibc之類的。
2)
.h是頭文件,庫文件么,.lib和.a是靜態庫,.dll和.so是動態庫。#include就是讓預編譯器找到某個文件(一般是頭文件),把裡面的內容原封不動地放到#include的位置上。你要願意,也可以把什麼都寫進頭文件里,對編譯器來說,這相當於把一切都寫進了一個源程序文件。反正寫個小程序這么搞沒啥問題 。
3)
就是這樣的。而且其中的依賴關系越來越微妙。
4)
程序=演算法+數據結構+程序設計方法+語言工具和環境
E. linux下的so,o,lo,a,la文件有什麼區別
它們的具體區別並不算太大,只是鏈接後的不同,具體區別如下:
F. linux下調用庫的時候,只有.a文件沒有頭文件能用么
.a文件就是庫文件
.h頭文件,編程的時候才需要。調用庫文件的時候不需要頭文件。
G. linux c語言靜態庫(.a文件)為什麼用ftp從遠程登錄下到本地後不能用 是不是這樣下載該.a文件被破壞了
1、遠程系統的字長和本地一樣嗎?比如64位和32位
2、遠程系統上的編譯器和本地差別大嗎?編譯器版本差太多的話,.a文件的格式可能會不同的
3、再不行的話你嘗試強制以binary方式傳輸文件。會不會是以文本方式傳.a導致文件被傳壞了
H. linux下的so,o,lo,a,la文件有什麼區別
o: 編譯的目標文件
a: 靜態庫,其實就是把若干o文件打了個包
so: 動態鏈接庫(共享庫)
lo: 使用libtool編譯出的目標文件,其實就是在o文件中添加了一些信息
la: 使用libtool編譯出的庫文件,其實是個文本文件,記錄同名動態庫和靜態庫的相關信息
I. linux a 靜態庫 怎麼設置
Linux的靜態庫文件並不需要設置啊,編譯鏈接.a靜態庫文件時只需要加上.a文件的完整版路徑就權可以了,比如:
gcc
-o
hello
hello.c
/usr/lib/libm.a
只有編譯鏈接動態庫才需要用-L選項來設置動態庫的搜索路徑,比如這個命令:
gcc
-o
hello
hello.c
-L/usr/openssl/lib
-lcrypto
J. .a是什麼文件可直接執行嗎
這是linux平台的,o是鏈接文件,而a是庫文件:
a庫文件可以通過ar命令從o文件得到:ar rcs libfoo.a a.o b.o
一般a文件都放在/usr/lib目錄下,我們把libfoo.a也放在此目錄,以後要使用libfoo.a中的函數,比如
hello.c中引用了libfoo.a中的函數,編譯如下:
gcc hello.c -Lfoo -o hello