linux下调用链接库问题
目录结构如下: 
 ctest 
 |--   hello.c 
 |--   hello.h 
 `--   lib 
             |--   head.h 
             |--   libtest.so 
             |--   package1.c 
             `--   package2.c   
 //******package1.c********* 
 #include    "head.h "   
 void   fun1() 
 { 
                         printf( "in   fun1,   package1......\n "); 
 }   
 void   fun2() 
 { 
                         printf( "in   fun2,   package1......\n "); 
 }   
 //*******package2.c********************** 
 #include    "head.h "   
 void   fun3() 
 { 
                         printf( "in   fun3,   package2......\n "); 
 }   
 void   fun4() 
 { 
                         printf( "in   fun4,   package2......\n "); 
 }   
 //********head.h******** 
 #include    <stdio.h>  
 void   fun1(); 
 void   fun2(); 
 void   fun3(); 
 void   fun4();   
 //***********hello.c************* 
 #include    "hello.h " 
 #include    "head.h " 
 int   main(int   argv,   char   **   argc) 
 { 
                         printf( "begin......\n "); 
                         func1(); 
                         printf( "end......\n "); 
                         return   1; 
 }   
 //***************hello.h*************** 
 #include    <stdio.h>    
 [root@localhost   lib]$   gcc   package1.c   package2.c   -fPIC   -shared   -o   libtest.so      
 [root@localhost   lib]$   cd   ..   
 [root@localhost   ctest]$   gcc   hello.c   -I   ./lib   -L   ./lib   -ltest   -o   hello 
 /tmp/ccuTyqmn.o:   In   function   `main ': 
 hello.c:(.text+0x1e):   undefined   reference   to   `func1 ' 
 collect2:   ld   返回   1   
 报错说找不到func1的定义,但是我已经将func1,func2,func3,func4打到了libtest.so包中,并且将那个包加进来了,为什么还找不到阿?
------解决方案--------------------原因1. gcc hello.c -I ./lib -L ./lib -ltest -o hello   不对。-L ./lib中间没有空格, 
 像这样:gcc hello.c -I./lib -L./lib -ltest -o hello,不然找不到libtest.so   
 原因2. main里的函数调用func1();名字不对,在包里的函数明明是fun1,fun2,fun3,fun4 
------解决方案--------------------有没空格无关. 
 主要是main()内函数名不对.