linux庫製作
Ⅰ mac和linux下的靜態庫製作問題求助
在終端上 用GCC -c 編譯出一個目標文件後綴.o
ar -r libmyku.a 目標文件 //這里是創建靜態庫 其中注意的是lib必須有 myku可以自行修改為任意名稱
連接時 gcc 源文件 libmyku.a
Ⅱ Linux下的靜態庫和動態庫
linux下的靜態庫和動態庫1.製作自己的動態庫和靜態庫linux下動態庫以.so結尾,靜態庫以.a結尾,它們都以lib開頭,比如一個庫名為net,那麼它的全名應該是libnet.so或者libnet.a。我們有兩個文件,hello.c和test.c,下面是兩個文件的內容//hello.c
www.shiwu.com
#include
<stdio.h>void
my_lib_func(){printf(Library
routine
called/r/n);}//test.c#include
<stdio.h>
www.shiwu.com
int
main(){my_lib_func();return
1;}test.c調用了hello.c的方法,我們把hello.c封裝成庫文件。無論是靜態庫還是動態庫,都是由.o文件組成,我們先把gcc
-c
hello.c生成.o文件製作靜態庫ar
crv
libmyhello.a
hello.o,ar是生成靜態庫的命令,libmyhello.a是我的靜態庫名。下一步就是在我的程序中使用靜態庫
可以看到已經有了Library
routine
called的結果,說明調用成功了。下面我們刪除libmyhello.a,看看程序是否還是運行正常
我們發現程序依然運行正常,說明靜態庫已經連接進入我們的程序中製作動態庫
www.shiwu.com
我們看見動態庫libmyhello.so已經生成,下面繼續使用
找不到庫文件,這個時候我們把so文件拷貝到/usr/lib下面
運行成功2.動態庫和靜態庫同時存在的調用規則我們可以發現,不論是動態庫還是靜態庫,程序編譯連接的時候都是加的參數-l,那麼當他們同時存在的時候,程序會選擇動態庫還是靜態庫呢。我們做個嘗試。
我們同時存在libmyhello.a和libmyhello.so,我們發現運行的時候,出現找不到動態庫的錯誤,由此,我們可以得出結論,同時存在動態庫和靜態庫的時候,gcc會優先選擇動態庫作者
梨樹陽光
Ⅲ C/C++有許多所謂的庫文件,這些庫文件是怎麼製作的已有有的庫文件能擴充嗎這些能在Linux中做嗎
人家.h頭文件里寫的API是跟系統的dll庫對應的....
當然``你自己寫dll文件的時候導出一些函數,然後發布的時候發布.h跟.lib文件,別人就能用你的DLL了
去看C語言的第一章!!!關於編譯啥啥的~~
Ⅳ linux下 怎麼製作軟體倉庫
製作軟體倉庫,首先講講安裝軟體的方法,現在linux發行版一般都用軟體包管理,我以centos為例,用到了YUM在線升級機制,yum客戶端和yum 伺服器端 利用yum命令進行查詢、安裝、升級與刪除功能 而軟體倉庫一般路徑在yum伺服器中,例如客戶端設置/etc/yum.repos.d/Centos-Base.repo 中baseurl=" "這個接的就是容器的實際網址,當然可以是網路上的,也可以是本地的,路徑正確就OK 至於YUM更多的東西可以上網查 很多。
Ⅳ Linux中如何創建靜態庫和動態庫
靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫。 動態庫在程序編譯時並不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name); #endif //HELLO_H 程序2: hello.c #include void hello(const char *name) { printf("Hello %s!\n", name); } 程序3: main.c #include "hello.h" int main() { hello("everyone"); return 0; } 無論動態庫還是靜態庫都需要用到.o文件來生成,先編譯生成.o文件。 # gcc -c hello.c 1:創建靜態庫 靜態庫文件名的命名規范是以lib為前綴,緊接著跟靜態庫名,擴展名為.a。例如:我們將創建的靜態庫名為myhello,則靜態庫文件名就是libmyhello.a。 # ar cr libmyhello.a hello.o 使用靜態庫:只需要在你的源程序中加入包含你所需要使用到的函數的聲明(即包含頭文件),然後在gcc生成目標文件時候指明靜態庫就OK了(除非你包含的頭文件在/usr/include,庫文件在標准庫/usr/lib,/lib下,否則你得顯示指明他們的路徑) # gcc -o hello main.c -L. -lmyhello # ./hello Hello everyone! 刪除靜態庫文件運行./hello,程序正常運行,說明靜態庫公用函數已經鏈接到目標文件。 2: 利用.o文件創建動態庫 動態庫文件擴展名為.so。 # gcc -shared -fPCI -o libmyhello.so hello.o 動態庫的使用與靜態庫使用方式一樣 # gcc -o hello main.c -L. -lmyhello # ./hello ./hello: error while loading shared libraries: libmyhello.so: cannot open shared object file: No such file or directory 哦!出錯了。快看看錯誤提示,原來是找不到動態庫文件libmyhello.so。程序在運行時,會在/usr/lib和/lib等目錄中查找需要的動態庫文件。若找到,則載入動態庫,否則將提示類似上述錯誤而終止程序運行。
Ⅵ linux中做一個簡單資料庫
如果是 需要做開發用的話
推薦用 Postgresql
http://www.postgresql.org/
如果想學習一下的話 推薦看看這個 用perl 做的輕量級資料庫
http://perldatabase.sourceforge.net/