編譯lib
Ⅰ 安卓lib文件怎麼編譯
LIB有兩種,一種是靜態庫,比如C-Runtime庫,這種LIB中有函數的實現代碼,一般用在靜態連編上,它是將LIB中的代碼加入目標模塊(EXE或者DLL)文件中,所以鏈接好了之後,LIB文件就沒有用了。一種LIB是和DLL配合使用的,裡面沒有代碼,代碼在DLL中,這種LIB是用在靜態調用DLL上的,所以起的作用也是鏈接中用,鏈接完成了,LIB也沒用了。至於動態調用DLL的話,根本用不上LIB文件。 目標模塊(EXE或者DLL)文件生成之後,就用不著LIB文件了。
Ⅱ 編譯64位程序無法使用32位編譯的lib么
編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤 In file included from /usr/include/features.h:378, from /usr/include/assert.h:37, from ../../../include/tinyxml/tinystr.h:42, from ../../../src/tinyxml/tinystr.cpp:32: /usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 沒有那個文件或目錄這時候需要安裝 gcc所有支持文件 sudo apt-get install gcc-multilib 將會安裝下列額外的軟體包: cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1 libstdc++6 libstdc++6-4.4-dev 建議安裝的軟體包: gcc-4.4-locales g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg libmudflap0-4.4-dev libgcc1-dbg libgomp1-dbg libmudflap0-dbg libcloog-ppl0 libppl-c2 libppl7 lib64mudflap0 libstdc++6-4.4-doc 下列【新】軟體包將被安裝: gcc-4.4-multilib gcc-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64下列軟體包將被升級:
Ⅲ .lib文件還能進行條件編譯和常量改變嗎
當然不行,條件編譯和常量修改都是未編譯前的,編譯成lib肯定就不行
Ⅳ 用來生成lib文件的頭文件,在別的項目中載入編譯lib文件時,用來生成該lib文件的頭文件能否改名
改名是不影響的,因為你編譯鏈接的時候編譯器會自動去找的,但是你要用預處理,因為有嵌套包含!
Ⅳ c51怎麼編譯lib
如何生成LIB庫文件
1.首先准備好生成LIB庫文件對應的.c和.h文件,在這里用到的.c和.h文件分別是:
"reg303.h"
"rjwf303_flash.h"
"rjwf303_flash.c"
"cos_security.h"
"cos_security.c"
2.新建一個項目,將上面的文件添加到項目中,並做以下設置:
選中Create Library
3.編譯之後就可以在項目目錄下生成對應的LIB文件。
Ⅵ 有一個庫的源代碼,怎麼用mingw編譯產生成lib
mingw編譯出來的靜態庫後綴名為.a,編譯出來的動態庫的導入庫後綴名為.dll.a,而在windows下後綴名為.lib的庫可能是靜態庫也可能是動態庫的導入庫。
mingw編譯出來的動態庫的導入庫可以直接在vc中直接使用,例如
#pragma comment(lib, "libx264.dll.a")
這樣你就不需要生成一個.lib後綴的動態庫的導入庫了,網上也有如何從.dll生成.lib的方法。
如果鏈接了動態庫的導入庫libpthread.dll.a,你發布的應用程序就要帶上pthread的dll。
使用靜態庫的好處是發布的應用程序組件模塊里不需要帶上相關的dll,如果要使用mingw編譯出來的靜態庫,可以如下:
#pragma comment(lib, "libx264.a")
但是僅僅鏈接這么一個靜態庫是不夠的,你還需要鏈接
libgcc.a
libmingwex.a
Ⅶ lib文件是什麼是不是編譯自動生成我不加lib文件運行不了
楸嘁肷傻哪勘甏肓唇櫻佣緯贍芄輝誦械目芍蔥形募。
#pragma comment(lib, "pcc32_vc6.lib")就是連入一個庫文件,表示鏈接pcc32_vc6.lib這個靜態庫文件來生成可執行文件。追問:
#include包含命令只適用於.h文件,不適用於.lib文件嗎回答:
當然,#include是包含用來頭文件的,相當於把這個頭文件的內容展開到當前的c或cpp源文件中,.h的頭文件和.c或.cpp的源文件都是文本格式的文件,通過編譯鏈接才能得到二進制的可執行文件。而.lib文件是經過了編譯以後的二進制文件,不能通過#include命令來包含。從源代碼文件到可執行文件的這個過程要弄清楚了。
Ⅷ 如何編譯libboost
您好,這樣的:
1、當前boost最新版本為1.55,下載地址http://sourceforge.net/projects/boost/files/boost/1.55.0/
或者從官網(www.boost.org)下載最新版的BOOST源碼,經過測試,2012和2013步驟相同,這里以2012為例。
2、打開VS2012 Native Tools Command,可以從開始--Microsoft Visual Studio 2012找到:將下載的 boost_1_55_0.zip 解壓在F盤,例如 F:\boost_1_53_0,執行bootstrap.bat。
3、編譯,可以簡單的使用b2 install,也可以指定存放目錄,或者尋找網上其它幫助文章。
查看幫助可以輸入:.\b2 --help
比如要開啟多線程編譯:b2 install threading=multi
設置生成的是debug或者release
備註:如果是使用VS2013,請指定輸出庫類型,否則會缺一個lib文件:
"無法打開文件 libboost_thread_vc120_mt_sgd-1_55.lib"。
在2013時,我是使用下面的語句進行編譯:
// 如果要獲取動態庫:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release
// 如果是要獲取靜態庫:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=static runtime-link=static threading=multi debug release
其中,注意修改--toolset=msvc-12.0,將12.0修改成對應的vs版本號,12.0是VS2013的版本號。
目標地址也要修改成你所需的。
注意,不要漏了install,它會幫你把頭文件集合到一個文件夾中。
編譯過程有一個復制過程,編譯需要的時間比較長,本次編譯過程中,會在C盤根目錄下生成一個boost文件夾,然後包含include和lib文件夾,這就是我們將要使用的頭文件和庫文件。
4、編譯完了我們就使用編譯在C盤中的文件。我將它們拷貝到了F盤,
需要簡單的配置兩個地方:這里使用絕對路徑,也可以配置環境來使用。
5、然後建立了一個工程測試。 在BoostTest中新建一個控制台應用程序,下圖三個文件分別是:
1) 將要使用的boost頭文件和庫文件。 2) 解壓出的boost文件夾,就是使用這個文件夾來進行 1 -- 3步驟的。 3)BoostTest 測試工程。
#include <iostream>
#include <boost/thread/thread.hpp>
void hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}
int main()
{
boost::thread thrd(&hello);
thrd.join();
}
編譯測試工程, 並運行,開始boost之旅吧。
Ⅸ 怎樣編譯生成lib文件啊
需要先製作DLL文件,然後生成對應DLL文件的LIB文件,並編寫由DLL文件中的公開函數的聲明所組成的頭文件。
請參閱有關DLL文件製作的教程
Ⅹ C語言編譯怎樣連接lib文件,請講解連接的原理,
廣義的代碼編譯過程,實際上應該細分為:預處理,編譯,匯編,鏈接。
預處理過程,負責頭文件展開,宏替換,條件編譯的選擇,刪除注釋等工作。gcc –E表示進行預處理。
編譯過程,負載將預處理生成的文件,經過詞法分析,語法分析,語義分析及優化後生成匯編文件。gcc –S表示進行編譯。
匯編,是將匯編代碼轉換為機器可執行指令的過程。通過使用gcc –C或者as命令完成。
鏈接,負載根據目標文件及所需的庫文件產生最終的可執行文件。鏈接主要解決了模塊間的相互引用的問題,分為地址和空間分配,符號解析和重定位幾個步驟。實
際上在編譯階段生成目標文件時,會暫時擱置那些外部引用,而這些外部引用就是在鏈接時進行確定的。鏈接器在鏈接時,會根據符號名稱去相應模塊中尋找對應符
號。待符號確定之後,鏈接器會重寫之前那些未確定的符號的地址,這個過程就是重定位。