linux lib ¶¯Ì¬¿â
¶¯Ì¬¿â*.soÔÚlinuxÏÂÓÃcºÍc++±à³Ìʱ¾³£»áÅöµ½£¬×î½üÔÚÍøÕ¾ÕÒÁ˼¸ÆªÎÄÕ½éÉܶ¯Ì¬¿âµÄ±àÒëºÍÁ´½Ó£¬×ÜËã¸ã¶®ÁËÕâ¸ö֮ǰһֱ²»Ì«Á˽âµÃ¶«¶«£¬ÕâÀï×ö¸ö±Ê¼Ç£¬Ò²ÎªÆäËüÕýΪ¶¯Ì¬¿âÁ´½Ó¿â¶ø¿àÄÕµÄÐÖµÜÃÇÌṩһµã°ïÖú¡£
1¡¢¶¯Ì¬¿âµÄ±àÒë
ÏÂÃæÍ¨¹ýÒ»¸öÀý×ÓÀ´½éÉÜÈçºÎÉú³ÉÒ»¸ö¶¯Ì¬¿â¡£ÕâÀïÓÐÒ»¸öÍ·Îļþ£ºso_test.h£¬Èý¸ö.cÎļþ£ºtest_a.c¡¢test_b.c¡¢test_c.c£¬ÎÒÃǽ«Õ⼸¸öÎļþ±àÒë³ÉÒ»¸ö¶¯Ì¬¿â£ºlibtest.so¡£
so_test.h£º
#include <stdio.h>
#include <stdlib.h>
void test_a();
void test_b();
void test_c();
test_a.c£º
#include "so_test.h"
void test_a()
{
printf("this is in test_a...\n");
}
test_b.c£º
#include "so_test.h"
void test_b()
{
printf("this is in test_b...\n");
}
test_c.c£º
#include "so_test.h"
void test_c()
{
printf("this is in test_c...\n");
}
½«Õ⼸¸öÎļþ±àÒë³ÉÒ»¸ö¶¯Ì¬¿â£ºlibtest.so
$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so
2¡¢¶¯Ì¬¿âµÄÁ´½Ó
ÔÚ1¡¢ÖУ¬ÎÒÃÇÒѾ³É¹¦Éú³ÉÁËÒ»¸ö×Ô¼ºµÄ¶¯Ì¬Á´½Ó¿âlibtest.so£¬ÏÂÃæÎÒÃÇͨ¹ýÒ»¸ö³ÌÐòÀ´µ÷ÓÃÕâ¸ö¿âÀïµÄº¯Êý¡£³ÌÐòµÄÔ´ÎļþΪ£ºtest.c¡£
test.c£º
#include "so_test.h"
int main()
{
test_a();
test_b();
test_c();
return 0;
}
l ½«test.cÓ붯̬¿âlibtest.soÁ´½ÓÉú³ÉÖ´ÐÐÎļþtest£º
$ gcc test.c -L. -ltest -o test
l ²âÊÔÊÇ·ñ¶¯Ì¬Á¬½Ó£¬Èç¹ûÁгölibtest.so£¬ÄÇôӦ¸ÃÊÇÁ¬½ÓÕý³£ÁË
$ ldd test
l Ö´ÐÐtest£¬¿ÉÒÔ¿´µ½ËüÊÇÈçºÎµ÷Óö¯Ì¬¿âÖеĺ¯ÊýµÄ¡£
3¡¢±àÒë²ÎÊý½âÎö
×îÖ÷ÒªµÄÊÇGCCÃüÁîÐеÄÒ»¸öÑ¡Ïî:
-shared ¸ÃÑ¡ÏîÖ¸¶¨Éú³É¶¯Ì¬Á¬½Ó¿â£¨ÈÃÁ¬½ÓÆ÷Éú³ÉTÀàÐ͵ĵ¼³ö·ûºÅ±í£¬ÓÐʱºòÒ²Éú³ÉÈõÁ¬½ÓWÀàÐ͵ĵ¼³ö·ûºÅ£©£¬²»ÓøñêÖ¾Íⲿ³ÌÐòÎÞ·¨Á¬½Ó¡£Ï൱ÓÚÒ»¸ö¿ÉÖ´ÐÐÎļþ
l -fPIC£º±íʾ±àÒëΪλÖöÀÁ¢µÄ´úÂ룬²»ÓôËÑ¡ÏîµÄ»°±àÒëºóµÄ´úÂëÊÇλÖÃÏà¹ØµÄËùÒÔ¶¯Ì¬ÔØÈëʱÊÇͨ¹ý´úÂ뿽±´µÄ·½Ê½
Ïà¹ØÎĵµ£º
Linux 2.6 ÏÂÄÚºËÄ£¿éµÄMakefile
ÊÕ²Ø
Linux 2.6 ÏÂÄÚºËÄ£¿éµÄMakefile
# Makefile 2.6
obj-m += hello.o
KDIR:=/lib/modules/$(shell uname -r)/build
# PWD=$(shell pwd)
all:
&n ......
1.ʹÓÃshellµÄwhichÃüÁ
È磺²éÕÒGUNµÄC±àÒëÆ÷°²×°Â·¾¶
$ which gcc
/usr/bin/gcc
2.Èç¹ûwhichûÓÐÕÒµ½ÒªÕÒµÄÎļþ£¬ÄǾÍÊÔÊÔwhereis£¬¸ÃÃüÁîËÑË÷¸ü´ó·¶Î§µÄϵͳĿ¼£¬ºÍshellËÑË÷·¾¶Î޹ء£
ÓÐЩϵͳwhichÃüÁîÎÞ·¨ÏÔʾÓû§Ã»Ö´ÐеÄȨÏÞÎļþ£º
È磺which ipppd
$ which ipppd
/usr/bin/which:no ipppd in £¨/bin:/ ......
http://blog.tianya.cn/blogger/post_show.asp?BlogID=2243487&PostID=21072119&idWriter=0&Key=0
Linuxϲ鿴cpuÀàÐÍ¡¢ÄÚ´æ´óС¡¢Ó²ÅÌ´óСÀàÐ͵È
CPU²é¿´£º
1¡¢¡¡¡¡# dmesg | grep CPU
¡¡¡¡Initializing CPU#0
¡¡¡¡CPU: Trace cache: 12K uops
¡¡¡¡CPU: L1 I-cache: 0K, L1 D-cache: 16K
¡¡¡¡CP ......
Ò»¡¢Ê²Ã´ÊÇtelnet
TelnetµÄÓ¦Óò»½ö·½±ãÁËÎÒÃǽøÐÐÔ¶³ÌµÇ¼£¬Ò²¸øhackerÃÇÌṩÁËÓÖÒ»ÖÖÈëÇÖÊֶκͺóÃÅ£¬µ«ÎÞÂÛÈçºÎ£¬ÔÚÄ㾡ÇéÏíÊÜTelnetËù´ø¸øÄãµÄ±ã½ÝµÄͬʱ£¬ÄãÊÇ·ñÕæÕýµÄÁ˽âTelnetÄØ£¿¡¡¡¡
¡¡¡¡¶þ Ô¶³ÌµÇ¼¡¡¡¡
¡¡¡¡Telnet·þÎñËäȻҲÊôÓÚ¿Í»§»ú/·þÎñÆ÷Ä£Ð͵ķþÎñ£¬µ«Ëü¸ü´óµÄÒâÒåÔ ......