当前位置: 技术问答>linux和unix
linux编译同时链接静态和动态库
来源: 互联网 发布时间:2017-01-12
本文导语: 一个测试程序想同时链接静态库和动态库: dynamic.cpp 动态库代码如下; #include using namespace std; int math_sub( int a, int b ) { return a - b; } 编译动态库: g++ -Wall -shared -o ../lib/libdynamic.so.1 dynamic.cpp ...
一个测试程序想同时链接静态库和动态库:
dynamic.cpp 动态库代码如下;
#include
using namespace std;
int math_sub( int a, int b )
{
return a - b;
}
编译动态库:
g++ -Wall -shared -o ../lib/libdynamic.so.1 dynamic.cpp
成功得到libdynamic.so.1
staticlib.cpp 静态库代码如下:
#include
using namespace std;
int math_add( int a, int b )
{
return a + b;
}
编译静态库;
g++ -c -o ../lib/libstatic.o staticlib.cpp
ar -cvp libstatic.a.1 libstatic.o
成功得到libstatic.a.1
main.cpp 调用程序代码如下:
#include
using namespace std;
int math_add(int,int);
int math_sub(int,int);
int main( int argv, char** argc )
{
cout
dynamic.cpp 动态库代码如下;
#include
using namespace std;
int math_sub( int a, int b )
{
return a - b;
}
编译动态库:
g++ -Wall -shared -o ../lib/libdynamic.so.1 dynamic.cpp
成功得到libdynamic.so.1
staticlib.cpp 静态库代码如下:
#include
using namespace std;
int math_add( int a, int b )
{
return a + b;
}
编译静态库;
g++ -c -o ../lib/libstatic.o staticlib.cpp
ar -cvp libstatic.a.1 libstatic.o
成功得到libstatic.a.1
main.cpp 调用程序代码如下:
#include
using namespace std;
int math_add(int,int);
int math_sub(int,int);
int main( int argv, char** argc )
{
cout