linux下静态链接库的问题
请问,静态链接库可以包含静态链接库么?
有人说静态库不可以包含,有人说可以包含。到底能不能阿?
windows下我用过,是可以的。linux下就做不了了? 有没有高人指点一下?
谢谢
举例如下:
建立一个源文件,并把这个原文件生成静态链接库。
xxx.c 中
#include <math.h>
float mysin(float angle)
{
return sin(angle);
}
然后把这他编译成静态链接库。
gcc -c xxx.c -o xxx.o
ar rcs libxxx.a xxx.o
在其他程序使用这个库的时候,例如: gmain.c
gcc gmain.c -lxxx -o gmain
会报错误。 因为sin()函数需要使用 libm.a库。
必须使用 gcc gmain.c -lxxx -lm -o gmain 才会可以。
有没有办法把这个libm.a包含在libxxx.a中?那么编译gmain.c时, 就不需要家-lm的选项了?就是把libm.a包含再libxxx.a中。 有没有办法阿?谢谢。
[解决办法]
[@test]$ cat m.cpp #include <cmath>float mysin(float angle){ return sin(angle);}[@test]$ g++ -c m.cpp -o m.o ; ar -rcs libmmm.a m.o[@test]$ cat main.cpp #include <iostream>using namespace std;extern float mysin(float);int main(){ cout << mysin(1.0); return 0;}[@ test]$ g++ main.cpp libmmm.a -o test[@ test]$ ./test 0.841471[@ test]$