Ⅰ linux下怎麼 調用 和生成 靜態庫
Linux庫有動態與靜態兩種,動態通常用.so為後綴,靜態用.a為後綴。例如:libhello.so libhello.a 為了在同一系統中使用不同版本的庫,可以在庫文件名後加上版本號為後綴,例如: libhello.so.1.0,由於程序連接默認以.so為文件後綴名。所以為了使用這些庫,通常使用建立符號連接的方式。 ln -s libhello.so.1.0 libhello.so.1 ln -s libhello.so.1 libhello.so 動態庫和靜態庫的區別: 當要使用靜態的程序庫時,連接器會找出程序所需的函數,然後將它們拷貝到執行文件,由於這種拷貝是完整的,所以一旦連接成功,靜態程序庫也就不再需要了。然而,對動態庫而言,就不是這樣。動態庫會在執行程序內留下一個標記『指明當程序執行時,首先必須載入這個庫。由於動態庫節省空間,linux下進行連接的預設操作是首先連接動態庫,也就是說,如果同時存在靜態和動態庫,不特別指定的話,將與動態庫相連接。 兩種庫的編譯產生方法: 第一步要把源代碼編繹成目標代碼。以下面的代碼hello.c為例,生成hello庫: /* hello.c */ #include void sayhello() { printf("hello,world\n"); } 用gcc編繹該文件,在編繹時可以使用任何全法的編繹參數,例如-g加入調試代碼等
Ⅱ linux怎麼把文件夾弄成svn庫
你得創建一個svn庫
svnadmin create /var/www/
然後把文件放進去然後再commit就可以了
Ⅲ [求助-西門子PLC200]200PLC程序 給別人,他不能打開裡面內容查看,但是他可以用該程序 .
最好的辦法是:1,通過加密POU主程序(OB1),這樣沒有密碼是打不程序的,只能下載。2,把子程序做成庫文件,能用子程序的全部用庫文件形式做出來,這樣即使別人有密碼都無法打開,因為只有源程序才能識別打開。這樣做了就天衣無縫,別人連看都沒的看,更就不用擔心會修改程序了。POU的加密是在編程軟體里的---查看--屬性。子程序做成庫是在編程軟體里的---文件---新建庫。如圖:《西門子 S7-200?LOGO!?SITOP 參考》V0.92版(更新版)(2008.02.15) 下載: http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0136查看---用戶自定義指令庫,有詳細介紹。 查看更多答案>>
Ⅳ 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文件。這樣,你在編譯的時候就可以直接使用這個靜態庫了。
Ⅳ Linux 可執行程序 配置文件 動態庫 怎麼打包成一個軟體
tar? 或者參考den,redhat 他們的包管理軟體.(復雜一些).
無非就是將各個文件放到指定的地方罷了.
tar --exclude=".svn" --exclude=".git" \
-hczf dist.tar.gz -C $(DIST_DIR) . \
--numeric-owner --owner=0 --group=0
在target上運行以下指令以解壓包:
gzip -dc dist.tar.gz
tar -xvf - -C /
你試下可以不,如果你想學習更多的linux的知識的話你可以去看下http://www.linuxprobe.com/chapter-00.html希望對你有幫助啊
Ⅵ 怎麼在Linux中eclipse建立自己的庫
建立自己的庫?問得太含糊了,是創建一個生成linux庫文件的工程?還是其他?
Ⅶ 如何在linux下用matlab生成動態鏈接庫
首先如何製作Linux下的so 文件
首先讓我們來看一下,把庫函數推遲到程序運行時期載入的好處:
1.可以實現進程之間的資源共享。
什麼概念呢?就是說,某個程序的在運行中要調用某個動態鏈接庫函數的時候,操作系統首先會查看所有正在運行的程序,看在內存里是否已有此庫函數的拷貝了。如果有,則讓其共享那一個拷貝;只有沒有才鏈接載入。這樣的模式雖然會帶來一些「動態鏈接」額外的開銷,卻大大的節省了系統的內存資源。C的標准庫就是動態鏈接庫,也就是說系統中所有運行的程序共享著同一個C標准庫的代碼段.
2.將一些程序升級變得簡單。用戶只需要升級動態鏈接庫,而無需重新編譯鏈接其他原有的代碼就可以完成整個程序的升級。Windows 就是一個很好的例子。
3.甚至可以真正坐到鏈接載入完全由程序員在程序代碼中控制。
程序員在編寫程序的時候,可以明確的指明什麼時候或者什麼情況下,鏈接載入哪個動態鏈接庫函數。你可以有一個相當大的軟體,但每次運行的時候,由於不同的操作需求,只有一小部分程序被載入內存。所有的函數本著「有需求才調入」的原則,於是大大節省了系統資源。比如現在的軟體通常都能打開若干種不同類型的文件,這些讀寫操作通常都用動態鏈接庫來實現。在一次運行當中,一般只有一種類型的文件將會被打開。所以直到程序知道文件的類型以後再載入相應的讀寫函數,而不是一開始就將所有的讀寫函數都載入,然後才發覺在整個程序中根本沒有用到它們
步驟:
首先建立一個函數文件fun.cpp 以及頭文件 fun.h
[cpp]view plain
exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/你的庫目錄
更改/etc/ld.so.conf,添加我們的庫目錄,然後執行ldconf
需要root許可權
(3)加入/user/lib 或者/usr/lib64看你的機器位數,貌似拷貝的方法最湊效了,其他方法有時候行不通
Ⅷ linux怎樣將開源軟體做成動態鏈接庫
tar.gz 是用tar命令將源碼文件打包成一個文件,然後用zip命令壓縮成一個壓縮包,所以在安裝前要解壓縮,命令如下:tar -xvzf test.tar.gz完成後會生成一個解壓縮後的目錄,進入該目錄,查看readme文件或者install文件,裡面有詳細的安裝命令。一般的安裝步驟是./configure 回車make 回車make install 回車make clean 回車如果configure沒有通過,說明你的系統環境沒有達到要求,該軟體所依賴的文件沒有被安裝,需要根據提示信息來具體分析。以上的各個命令只是最常用的使用方式,還有比較實用的參數沒有介紹,可以自己查看幫助文檔。
Ⅸ 怎麼在linux下將自己的C++程序封裝成庫文件
GCC是Linux操作系統下一個非常重要的源代碼編譯工具,C、C++都可以通過gcc編譯後來執行,案例如下: 在屏幕上列印"Hello,Linux." #include#includeint main(int argc,char **argv) { printf("Hello,Linux.\n"); exit(0); }將源文件保存為hello.c...
Ⅹ linux下將程序中用到的第三方庫編譯到自己的程序中
舉例,頭文件名 abc.h 函數名為 abc_test(); 第三方庫頭文件目錄為/abc/include/ 鏈接庫目錄為/abc/lib/ 1、頭文件和源文件:這是最好的情況,引用頭文件和相關函數即可。 如:#include "abc.h" abc_test();//直接調用即可 編譯時,Makefile中加入編譯選項 -I/abc/include 為了能將庫的頭文件引進來。 而且你的程序運行時,不再需要這個第三方庫。 2、靜態鏈接庫:引用頭文件和相關函數,設提供的靜態庫名為 libabc.lib 編譯時,Makefile中加入 編譯選項 1)-I/abc/include #編譯時加,為了能將庫的頭文件引進來; 2)-L/abc/lib -labc #鏈接時加的 而且你的程序運行時,不再需要這個第三方庫。 3、動態鏈接庫,設動態鏈接庫為libabc.so 調用動態鏈接庫文件,需要dlopen等函數 編譯時,Makefile中加入 編譯選項 1)-I/abc/include #編譯時加,為了能將庫的頭文件引進來; 2)-L/abc/lib -labc #鏈接時加的 注意:你的程序運行時,需要這個第三方庫的libabc.so文件。