生成.so文件

时间:2017-07-14 13:09:23

标签: c++ gcc dependencies dynamic-linking .so

我有文件main.c,我想创建main.so

main.c取决于libCmodel.so文件。

main.c看起来像

#include <stdio.h>
#include "Cmodel.h" // Must include before Amodel and Bmodel
#include "Amodel.h"
#include "Bmodel.h"

int main(){
..
return 0;
}

可以看出,libCmodel.so文件取决于libAmodel.so.4libBmodelso.11. 所有"*.so"个文件都与main.c

位于同一目录中

我使用以下命令生成目标文件

gcc -x c++ -fPIC main.c -o main.o -c -I.

我看到main.o已生成。 但是,我不确定我是否使用了正确的命令。以上命令是否正确?

然后,我尝试使用以下命令生成main.so,

g++ -shared -o main.so main.o -L. -lCmodel
g++ -shared -o main.so main.o -L. -lCmodel -lAmodel -lBmodel
g++ -shared -o main.so main.o -L. -lCmodel -lAmodel.4 -lBmodel.11
g++ -shared -o main.so main.o -L. -lCmodel -lAmodel.so.4 -lBmodel.so.11

上述哪一条命令是正确的? 请帮忙

1 个答案:

答案 0 :(得分:0)

包含main函数的文件不应该是共享库。它是应用程序的入口点,因此它应该作为可执行文件链接。

gcc -x c++ -I. -L. -o main main.c -lCmodel