我有文件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