我有文件main.c
,我想创建main.so
。生成.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.4
和libBmodelso.11.
所有"*.so"
文件存在于同一目录中main.c
我用下面的命令生成目标文件
gcc -x c++ -fPIC main.c -o main.o -c -I.
我看到生成了main.o
。 但是,我不确定我是否使用了正确的命令。上述命令是否正确?
然后,我尝试了以下commads产生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
了上述命令是正确的? 请帮忙
我已经使用了'gcc -x C++ -I。 -L。 -lCmodel -Wl,-rpath ,. -o main.o main.c'编译并执行main.c文件 – john
这显然不是编译为C,而是C++,一种不同的语言。使用正确的标签。为什么你使用C++代码的'.c'文件扩展名?使用'.cpp'或'.C++',并将其余的留给gcc前端。 – Olaf
这是一个c文件而不是cpp文件。所以,我用.c作为扩展名。 – john