test.h
1 #ifndef _TEST_H_ 2 #define _TEST_H_ 3 4 void TestA(); 5 void TestB(); 6 7 #endif
test_a.cpp
1 #include <stdio.h> 2 #include "test.h" 3 4 void TestA() 5 { 6 printf("TestA func\n"); 7 }
test_b.cpp
1 #include <stdio.h> 2 #include "test.h" 3 4 void TestB() 5 { 6 printf("TestB func\n"); 7 }
生成so文件的命令
g test_a.cpp test_b.cpp -fPIC -shared -o libtest.so
生成.a文件的命令
1 gcc -c test_a.cpp 2 gcc -c test_b.cpp 3 ar -r libtest.a test_a.o test_b.o
test.cpp
1 #include "test.h" 2 3 int main() 4 { 5 TestA(); 6 TestB(); 7 8 return 0; 9 }
采用动态库编译命令
g test.cpp -o test -L. -ltest
执行
export LD_LIBRARY_PATH=./ ./test
执行结果如下。

采用静态库编译命令
g -static -o test -L. -ltest test.cpp
执行效果

静态库的嵌套调用,有时候我想做一个自己的静态库,它里面要调用其他静态库里面的函数,经过试验
这个好像用ar -r不行,所以就在链接的时候需要两个库文件都包含,同时要有这一个头文件才行。。。
|