linux創建動態
A. linux基本操作--動態進程
top [選項]
選項
-d 指定top命令每隔幾秒更新,默認是3秒更新
-i 使top不顯示任何閑置或者僵死進程
-p 通過指定監控進程ID來僅僅監控某個進程的狀態
交互操作說明
P 以CPU使用率排序,默認項
M 以內存的使用率排序
N 以PID排序
q 退出top
top後,按回車鍵,查看執行的進程
輸入u,再輸入用戶名(監視特定用戶)
輸入k,再輸入進程ID號(終止指定的進程)
top -d 10 //指定系統狀態更新的時間(每隔 10 秒自動更新, 默認是 3 秒)
參考:尚矽谷_Linux教程
B. 如何在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看你的機器位數,貌似拷貝的方法最湊效了,其他方法有時候行不通
C. 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等目錄中查找需要的動態庫文件。若找到,則載入動態庫,否則將提示類似上述錯誤而終止程序運行。
D. 如何生成linux下的動態庫和靜態庫
靜態庫 靜態庫的後綴是.a,它的產生分兩步 Step 1.由源文件編譯生成一堆.o,每個.o里都包含這個編譯單元的符號表Step 2.ar命令將很多.o轉換成.a,成為靜態庫動態庫的後綴是.so,它由gcc加特定參數編譯產生。具體方法參見後文實例。123123 在 GNU...
E. 怎麼給Linux系統配置動態IP服務
動態ip地址。
如果是你接的寬頻,家用寬頻都是自動分配的。
如果區域網內的,可以建立DHCP伺服器,然後將DHCP伺服器設置為你的DHCP伺服器的地址即可。
F. 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會優先選擇動態庫作者
梨樹陽光
G. 如何在linux下編寫動態庫
最簡單配置就是把連接庫目錄,添加到/etc/ld.so.conf中,一行一個目錄就行,添加完成後,執行#ldconfig更新動態連接庫。
H. 怎麼給linux系統配置動態ip服務
所謂的動態ip指的是DHCP服務,如果不用手動設置的IP地址,使用動態ip也是個不錯的選擇。特別是在主機比較多的區域網內,動態ip可以有效解決ip自動分配問題。那麼Linux系統應該怎麼樣配置動態ip服務呢?
怎麼給Linux系統配置動態IP服務
DHCPd後台程序老是讀取配置文件/etc/dhcpd.conf, 下面給出一本人主機上的DHCP配置文件的例子:
ddns-update-style interim;
ignore client-updates;
subnet 192.168.25.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.25.15;
option subnet-mask 255.255.255.0;
# option nis-domain 「uc88.domain」;
option domain-name 「uc88.domain」;
option domain-name-servers 202.96.128.68,192.168.25.15;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid)。 Don『t change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.25.100 192.168.25.254;
default-lease-time 259200;
max-lease-time 518400;
# we want the nameserver to appear at a fixed address
# host ns {
# next-server marvin.redhat.com;
# hardware ethernet 12:34:56:78:AB:CD;
# fixed-address 207.175.42.254;
# }
}
上面的意思是:
用255.255.255.0作為子網掩碼,用192.168.25.255作為廣播地址,用192.168.25.15作為
默認網關,用202.96.128.68 and 192.168.25.15作為DNS伺服器 用分配地址的范圍是:192.168.25.100-192.168.25.254
保存退出
大多數情況下,DHCP的安裝不創建一個dhcpd.leases 文件,在您啟動DHCP伺服器之前,您必須創建空文件 dhcpd.leases
#touch /var/state/dhcp/dhcpd.leases
為啟動DHCP伺服器,簡單地打入 /usr/sbin/dhcpd 或者用#ntsysv把DHCP服務自動啟動
這用啟動dhcpd在eth0設備上,可能您希望在eth1設備上啟動dhcpd,則
#/usr/sbin/dhcpd eth1
如何觀察客戶的ip到底存在無獲得呢?
在98運行winipcfg
在2000 下運行ipconfig /all
以上就是給Linux系統配置動態ip的方法了,Linux設置動態ip還是要用代碼來實現,不過這對於Linux老手來說,應該是小問題啦。
I. Linux動態鏈接和靜態鏈接簡析
linux動態鏈接和靜態鏈接簡析1.生成靜態鏈接庫gcc
-c
h.c
-o
h.oar
cqs
libh.a
h.o//ar是生成庫的命令,cqs是參數,libh.a是生成的靜態鏈接庫須以lib開頭,h是庫名,a表示是靜態鏈接庫,h.o是剛才生成目標文件2.生成動態鏈接庫
www.shiwu.com
gcc
-c
h.c
-o
h.o生成動態鏈接庫用gcc來完成gcc
-shared
-WI
-o
libh.so
h.o//-shared
-WI是參數,libh.so是生成的靜態鏈接庫須以lib開頭,h是庫名,so表示是動態鏈接庫,h.o是剛才生成目標文件3.將生成的libh.a,libh.so拷貝到/usr/lib或/lib下4.編譯帶靜態鏈接庫的程序gcc
-c
test.c
-o
test.ogcc
test.o
-o
test
-WI
-Bstatic
-lh//-WI
-Bstatic表示鏈接靜態庫,-lh中-l表示鏈接,h是庫名即/usr/lib下的libh.a5.編譯帶動態鏈接庫的程序gcc
-c
test.c
-o
test.ogcc
test.o
-o
test
-WI
-Bdynamic
-lh//-WI
-Bdynamic表示鏈接動態庫,-lh中-l表示鏈接,h是庫名即/usr/lib下的libh.so6.運行./test得到結果
www.shiwu.com
7.其他知識有些庫形如libh.so.1.0,1.0表示版本號.若要使用該庫,通常要建立一個軟連接,用ln
-s
libh.so.1.0
libh.so.系統不知道1.0為何意思。編譯連接時同時要用動態和靜態鏈接庫,則用如下命令gcc
test.o
-o
test
-WI
-Bstatic
-lh1
-WI
-Bdynamic
-lh28.動態庫和靜態庫的位置問題把動態庫或者靜態庫放在/usr/lib或者/lib下,在鏈接的時候系統會自動到這兩個目錄下尋找。如果沒有放在這兩個目錄下,則修改/etc/ld.so.conf文件,把目錄寫入該文件,然後ldconfig,就OK了。如果沒有放在usr/lib或者/lib目錄下,也不修改/etc/ld.so.conf文件,也可以在編譯的時候加上
-L/路徑
也可以。但是在執行的時候還是會提示找不到庫的所在。
作者
llg521208
J. Linux操作系統中,建立動態路由需要用什麼到文件
在linux上常見的路由服務就是zebra提供的.
zebra都支持ripv1,ripv2,ospf,bgp等動態路由協議.
在我們現在一般的linux系統上,一般是使用quagga這個軟體來提供zebra功能,quagga是由zebra升級而來的,可以說quagga就是zebra了,先來安裝下quagga
yum install quagga或者rpm -ivh quagga*.
這個軟體所提供的各項路由動態協議都放置在/etc/quagga這個目錄內.現在我們來說下ripv2協議哈,我們需要注意的是,不論我們啟動什麼動態路由協議,都需要先啟動zebra才行,:
zebra這個daemon的功能是更新內核的路由原則.
rip這個daemon則是向附近的其他router溝通協調路由規則的傳送與否
設置路由之前,我們先設置zebra並且啟動zebra
vi /etc/quagga/zebra.conf
hostname redhat 給這個路由器隨便設置一個主機名稱
enable password redhat 設置密碼
log file zebra.log 將所有zebra產生的信息存到日誌文件中
[root@xiaozhu Server]# /etc/init.d/zebra start
[root@xiaozhu Server]# netstat -tunlp |less
tcp 0 0 127.0.0.1:2601 0.0.0.0:* LISTEN 3522/zebra
zebra這個服務的任務主要是修改linux系統內核內的路由,它僅僅監聽本機介面,並不會監聽外部的介面.另外,在zebra.conf這個文件中設置的密碼是有用的,可以讓我們登錄zebra這個軟體.
現在我們來看看2601號埠是否正確啟動
其實剛才也不一定要用netstat -tunlp |less,也可以用nmap localhost
[root@xiaozhu ~]# vi /etc/quagga/zebra.conf
[root@xiaozhu ~]# vi /etc/quagga/zebra.conf
[root@xiaozhu ~]# /etc/init.d/zebra restart
